我想在满足条件时替换小标题中的值。
Data <- tibble(a = 1:5,
b = c("a","b","a","a","a"),
c = c("z","y","x","z","z"),
d = c("m","n","m","m","m"),
e = c(1,3,4,7,2))
a b c d e
1 1 a z m 1
2 2 b y n 3
3 3 a x m 4
4 4 a z m 7
5 5 a z m 2
我想基于列a中的最大值替换包含列b,c和d重复组合的行。这里的第1、4和5行在b,c和d列中都包含“ a”,“ z”和“ m”,因此此示例将输出如下:
a b c d e
1 5 a z m 2
2 2 b y n 3
3 3 a x m 4
4 5 a z m 2
5 5 a z m 2
这是一个想法,它针对修订后的需求进行了更新,该需求e
已更新为具有maxime
的行中的值a
。
library(dplyr)
Data %>%
group_by(b,c,d) %>%
mutate(e = e[which.max(a)], a = max(a)) %>%
ungroup()
# # A tibble: 5 x 5
# a b c d e
# <int> <chr> <chr> <chr> <dbl>
# 1 5 a z m 2
# 2 2 b y n 3
# 3 3 a x m 4
# 4 5 a z m 2
# 5 5 a z m 2
计算的顺序e
和a
你:是的,当然,关键的max(a)
第一,那么e
就不会知道这原来的值a
是最大。
library(data.table)
cols <- c("a", "e")
as.data.table(Data)[, c("e", "a") := .(e[which.max(a)], max(a)), by = .(b, c, d)][]
# a b c d e
# 1: 5 a z m 2
# 2: 2 b y n 3
# 3: 3 a x m 4
# 4: 5 a z m 2
# 5: 5 a z m 2
(尾随[]
只是一个次要的功能/错误data.table
……仅出于美观目的而已,没有它的数据是相同的。)
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句