SO上可能重复:使用现有数据框的条件计算新变量
我正在尝试从组均值创建一个向量(例如 z)。该向量的长度将等于创建组均值的原始数据帧的行数,并且向量 z 的每个元素将对应于组成员。
例如,
A mean of group A
C mean of group c
F mean of group F
C mean of group C
等等
任何帮助将不胜感激。
SO上可能重复:使用现有数据框的条件计算新变量
我正在尝试从组均值创建一个向量(例如 z)。该向量的长度将等于创建组均值的原始数据帧的行数,并且向量 z 的每个元素将对应于组成员。
例如,
A mean of group A
C mean of group c
F mean of group F
C mean of group C
等等
任何帮助将不胜感激。
听起来你需要这个功能ave
试试看
?ave
例如尝试
ave(InsectSprays$count,InsectSprays$spray)
(InsectSprays 带有 R,应该可以正常工作)或
with(InsectSprays, ave(count,spray))
所以对你的数据做同样的事情并将它分配给z
这是它的作用(尝试粘贴前两行,然后检查InSp
):
InSp <- InsectSprays
InSp$ave <- with(InSp, ave(count,spray))
head(InSp,15)
count spray ave
1 10 A 14.50000
2 7 A 14.50000
3 20 A 14.50000
4 14 A 14.50000
5 14 A 14.50000
6 12 A 14.50000
7 10 A 14.50000
8 23 A 14.50000
9 17 A 14.50000
10 20 A 14.50000
11 14 A 14.50000
12 13 A 14.50000
13 11 B 15.33333
14 17 B 15.33333
15 21 B 15.33333
该函数ave
还有许多其他用途,因为您可以为其提供一个函数作为参数(然后不是计算意味着它将使用您希望的任何其他函数);对于它的特别微妙的使用,请参阅此答案。
您可以按照此处所述使用 rowMeans:
data <- matrix(c(1:12),nrow=3)
z <- rowMeans(data)
data
[,1] [,2] [,3] [,4]
[1,] 1 4 7 10
[2,] 2 5 8 11
[3,] 3 6 9 12
z
[1] 5.5 6.5 7.5
我不太了解您的原始数据是如何设置的,因此了解更多信息会有所帮助。
如果您有行中的数据,并且您只想要一个新向量,其中每个元素是相应行的平均值,则可以使用 R 的 ?apply 函数轻松完成:
X = matrix(rnorm(100), nrow=10)
means = apply(X, 1, mean)