gpt4 book ai didi

r - 使用 summarise_each 减去某些行的平均值

转载 作者:行者123 更新时间:2023-12-01 15:01:05 25 4
gpt4 key购买 nike

我有一个包含 30 个变量的数据集。其中之一是指示变量(0 或 1),我想减去某些列的标签为 1 的行的平均值(类似于居中,但取某些行而不是整列的平均值)。

Col2 Col3 Col4 label
400 322 345 1
131 345 809 1
565 676 311 0
121 645 777 0
322 534 263 0
545 222 111 0

对于上述数据集,我想对 Col2:Col4 执行以下操作:

x(i,j)-x'(,j)

其中 x(i,j) 表示单元格,x'(,j) 表示 label 对应的列中行的平均值=1。例如,对于 [3,1] 应该是

(565-平均值(400,131))= 299.5

第 2 列的预期输出:

Col2
134.5
-134.5
299.5
-144.5
56.5
279.5

我一直在尝试使用summarise_each命令,但到目前为止还没有成功。我给出的命令是

try<- group_by(data,lbl) %>% select(c(4,13:26)) %>% summarise_each(funs((.)-(mean(data[data$lbl==1,])))

但这正在生成 NA 并且我不太确定我哪里出了问题(我确定它在 summarise_each 命令中,但我没有能够弄清楚如何正确使用 funs())

感谢任何帮助。谢谢!

最佳答案

dat %>% 
mutate_each(funs(. - mean(.[label==1])), -label)
    Col2   Col3 Col4 label
1 134.5 -11.5 -232 1
2 -134.5 11.5 232 1
3 299.5 342.5 -266 0
4 -144.5 311.5 200 0
5 56.5 200.5 -314 0
6 279.5 -111.5 -466 0

关于r - 使用 summarise_each 减去某些行的平均值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38379575/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com