为了账号安全,请及时绑定邮箱和手机立即绑定

计算列子集上的行均值

计算列子集上的行均值

弑天下 2019-10-30 10:40:57
给定一个样本数据框: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创建包含ID列和每一行均值的第二个数据框的最佳方法是什么?像这样:ID  MeanA    3.66B    4.33C    3.33D    4.66E    4.33类似于:RM<-rowMeans(DF[,2:4])我想使方法与他们的方法保持一致ID。
查看完整描述

3 回答

?
交互式爱情

TA贡献1712条经验 获得超3个赞

计算列子集上的行均值:


创建一个新的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


查看完整回答
反对 回复 2019-10-30
?
猛跑小猪

TA贡献1858条经验 获得超8个赞

从数据框开始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


查看完整回答
反对 回复 2019-10-30
?
素胚勾勒不出你

TA贡献1827条经验 获得超9个赞

使用dplyr:


library(dplyr)


# exclude ID column then get mean

DF %>%

  transmute(ID,

            Mean = rowMeans(select(., -ID)))

要么


# select the columns to include in mean

DF %>%

  transmute(ID,

            Mean = rowMeans(select(., C1:C3)))


#   ID     Mean

# 1  A 3.666667

# 2  B 4.333333

# 3  C 3.333333

# 4  D 4.666667

# 5  E 4.333333


查看完整回答
反对 回复 2019-10-30
  • 3 回答
  • 0 关注
  • 526 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信