【发布时间】:2018-11-15 01:07:47
【问题描述】:
我想根据单独分组变量列中具有特定值的所有行除行来汇总多列数据。例如,在下面的 df 中,我想根据未分配给与给定行匹配的集群的行的值来获取 A、B、C、D 和 E 的中值。
df = data.frame(cluster = c(1:5, 1:3, 1:2),
A = rnorm(10, 2),
B = rnorm(10, 5),
C = rnorm(10, 0.4),
D = rnorm(10, 3),
E = rnorm(10, 1))
df %>%
group_by(cluster) %>%
summarise_at(toupper(letters[1:5]), funs(m = fun_i_need_help_with(.)))
fun_i_need_help_with 相当于:
first row: median(df[which(df$cluster != 1), "A"])
second row: median(df[which(df$cluster != 2), "A"])
and so on...
我可以使用嵌套的 for 循环来做到这一点,但它运行起来很慢,而且似乎不是一个好的类似 R 的解决方案。
for(col in toupper(letters[1:5])){
for(clust in unique(df$cluster)){
df[which(df$cluster == clust), col] <-
median(df[which(df$cluster != clust), col])
}
}
【问题讨论】:
-
随机注:
LETTERS[1:5]与toupper(letters[1:5])相同 -
谢谢,很高兴知道!