1

SO上可能重复:使用现有数据框的条件计算新变量

我正在尝试从组均值创建一个向量(例如 z)。该向量的长度将等于创建组均值的原始数据帧的行数,并且向量 z 的每个元素将对应于组成员。

例如,

A      mean of group A
C      mean of group c
F      mean of group F
C      mean of group C

等等

任何帮助将不胜感激。

4

3 回答 3

4

听起来你需要这个功能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还有许多其他用途,因为您可以为其提供一个函数作为参数(然后不是计算意味着它将使用您希望的任何其他函数);对于它的特别微妙的使用,请参阅此答案

于 2013-05-14T04:12:20.857 回答
1

您可以按照此处所述使用 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
于 2013-05-14T11:59:23.343 回答
0

我不太了解您的原始数据是如何设置的,因此了解更多信息会有所帮助。

如果您有行中的数据,并且您只想要一个新向量,其中每个元素是相应行的平均值,则可以使用 R 的 ?apply 函数轻松完成:

X     = matrix(rnorm(100), nrow=10)
means = apply(X, 1, mean)
于 2013-05-14T04:23:34.813 回答