计算列的子集上的行意味着

给定一个示例数据框架:

C1<-c(3,2,4,4,5) C2<-c(3,7,3,4,5) C3<-c(5,4,3,6,3) DF<-data.frame(ID=c("A","B","C","D","E"),C1=C1,C2=C2,C3=C3) DF ID C1 C2 C3 1 A 3 3 5 2 B 2 7 4 3 C 4 3 3 4 D 4 4 6 5 E 5 5 3 

创build包含ID列和每行平均值的第二个数据框的最佳方法是什么? 像这样的东西:

 ID Mean A 3.66 B 4.33 C 3.33 D 4.66 E 4.33 

类似于:

 RM<-rowMeans(DF[,2:4]) 

我想保持手段与他们的ID一致。

计算列的子集上的行平均值:

创build一个新的data.frame,它将DF中的第一列指定为一个称为ID的列,并计算该行上所有其他字段的均值,并将其放入名为“Means”的列中:

 data.frame(ID=DF[,1], Means=rowMeans(DF[,-1])) ID Means 1 A 3.666667 2 B 4.333333 3 C 3.333333 4 D 4.666667 5 E 4.333333 

从数据框DF ,可以使用data.table包:

 library(data.table) ## EDIT: As suggested by @MichaelChirico, setDT converts a ## data.frame to a data.table by reference and is preferred ## if you don't mind losing the data.frame setDT(DF) # EDIT: To get the column name 'Mean': DF[, .(Mean = rowMeans(.SD)), by = ID] # ID Mean # [1,] A 3.666667 # [2,] B 4.333333 # [3,] C 3.333333 # [4,] D 4.666667 # [5,] E 4.333333 

您可以在数据框中对应于Means的$创build一个新行

 DF$Mean <- rowMeans(DF[,2:4])