计算按列号分组的平均值

时间:2019-07-19 09:43:59

标签: r dataframe

我有两个数据帧,df_valuedf_numdf_num有两列:rowcol,它们是满足特定条件的df_value中值的行和列号。我想通过col中的df_num计算均值组。

我被col所困。

df_value<- data.frame('a'=1:3,'b'=2:4,'c'=1:3,'d'=3:5)
df_num <- which(df<4,arr.ind = TRUE)
df_value
a b c d
1 2 1 3
2 3 2 4
3 4 3 5
df_num
row col
1    1
2    1
3    1
1    2
2    2
1    3
2    3
3    3
1    4

我想获取col1col2col3col4的均值,

mean:
 2
 2.5
 2
 3

2 个答案:

答案 0 :(得分:1)

如果您必须使用df_num来对df_val进行子集化,然后采用列的mean,则一种方法是对split子集化{{1 }}基于df_value的{​​{1}}列,并获取每个列表的"col"

df_num

如评论中所述,您可以直接过滤mean以获取sapply(split(df_value[df_num], df_num[, "col"]), mean, na.rm = TRUE) # 1 2 3 4 #2.0 2.5 2.0 3.0

df_value

答案 1 :(得分:1)

我们可以使用base R中的tapply(df_value[df_num], df_num[, 'col'], FUN = mean) # 1 2 3 4 #2.0 2.5 2.0 3.0

{{1}}