簡體   English   中英

計算按列號分組的平均值

[英]calculate mean grouped by col number

我有兩個數據df_valuedf_num df_num具有兩列: rowcol ,它們是df_value中滿足特定條件的值的行號和列號。 我想按df_numcol計算均值組。

我被卡在組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

如果你必須使用df_num於子集df_val然后取mean列的一種方法是split子集df_value根據"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以取mean

sapply(df_value, function(x) mean(x[x<4], na.rm = TRUE))

#  1   2   3   4 
#2.0 2.5 2.0 3.0 

我們可以從base R使用tapply

tapply(df_value[df_num], df_num[, 'col'], FUN = mean)
#  1   2   3   4 
#2.0 2.5 2.0 3.0 

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM