【发布时间】:2016-07-15 04:44:54
【问题描述】:
我有一个包含 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-mean(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()正确)
感谢任何帮助。谢谢!
【问题讨论】:
-
请阅读有关how to ask a good question 的信息以及如何提供reproducible example。这将使其他人更容易帮助您。
-
@ProcrastinatusMaximus 我已经编辑了这个问题,我希望这能让它更清楚。谢谢!
-
您想要列的平均值,但没有
label == 1的值? -
@StevenBeaupré 不,对于每一列,我想减去 label==1 的行的平均值。
-
所以列的总和(不包括
label == 1的值)减去label == 1的值的平均值?请提供您的预期输出。