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

计算列子集上的行均值

计算列子集上的行均值

aluckdog 2019-12-15 12:08:09
给定一个样本数据框: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贡献2003条经验 获得超2个赞

计算列子集上的行均值:


创建一个新的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-12-16
?
LEATH

TA贡献1936条经验 获得超6个赞

从数据框开始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-12-16
?
幕布斯6054654

TA贡献1876条经验 获得超7个赞

使用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-12-16
  • 3 回答
  • 0 关注
  • 408 浏览

添加回答

举报

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