我有两个数据帧,df_value
和df_num
。 df_num
有两列:row
和col
,它们是满足特定条件的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
我想获取col1
,col2
,col3
和col4
的均值,
mean:
2
2.5
2
3
答案 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}}