【发布时间】:2014-08-12 22:59:17
【问题描述】:
我想知道如何通过 id 行计算两个变量(C1 和 C2)的平均值(C4):
例子:
给定一个示例数据框
ID C1 C2 C3 C4 C5
1 3 3 5 3 3.9
2 2 7 4 4,5 3.9
3 4 3 3 3,5 3.9
4 4 4 6 4 3.9
5 5 5 3 5 3.9
我试过了:
data <- within(data,{ C4<- (mean(C1)+mean(C2))/2})
这仅给出 (C5) 一个值。我想我需要类似的东西:
data <- within(data,{ C4<- (mean(C1)+mean(C2))/2, by=list(ID)})
我想保留 inside 结构,因为我必须使用与上述相同的逻辑创建几个新变量作为给定变量的手段。 更糟糕的是,我还必须在该命令中使用 na.rm=T。
【问题讨论】:
-
你试过
data$C4 <- rowMeans(data[, c("C1", "C2")])吗? -
我得到'closure'类型的错误对象不是子集
-
嗯?它非常适合您提供的数据集。也许添加
na.rm=T?如rowMeans(data[, c("C1", "C2")], na.rm = T)。否则你的问题是不可重现的 -
你是对的。谢谢你。我在内部结构方面遇到了麻烦
-
within(data, C4 <- rowMeans(cbind(C1, C2)))或transform(data, C4 = rowMeans(cbind(C1, C2)))
标签: r