當有兩個識別符號時,我想按組獲得平均值。假設我有以下資料集:
set.seed(123)
df <- data.frame(id = 1:2,
id2 = c("a","b", "c","c", "b","c", "a","b", "c","b"),
var1 = runif(10))
我正在嘗試使用 data.table 獲得 2 組的平均價值。我想用平均值創建另一列(avg)。這意味著,當它與 id 和 id2 匹配時,平均值將在各行中重復。這就是我想要做的:
setDT(df)[, avg := mean(var1), by=list(id,id2)]
所以,只是為了澄清。有兩個值標識為 id=1 和 id2 = a。平均值為 (0.2875775 0.5281055)/2 = 0.4078415。我希望這個值在第 1 行和第 7 行旁邊重復,它們對應于 id=1 和 id2 = a,并依次用于所有其他平均值。我怎樣才能做到這一點?
uj5u.com熱心網友回復:
library(tidyverse)
df %>%
group_by(id, id2) %>%
mutate(avg = mean(var1))
id id2 var1 avg
<int> <chr> <dbl> <dbl>
1 1 a 0.288 0.408
2 2 b 0.788 0.712
3 1 c 0.409 0.480
4 2 c 0.883 0.464
5 1 b 0.940 0.940
6 2 c 0.0456 0.464
7 1 a 0.528 0.408
8 2 b 0.892 0.712
9 1 c 0.551 0.480
10 2 b 0.457 0.712
您提供的代碼也使用data.table. 請注意,這setDT將轉換相同的 df,如果您列印 df,則不會創建附加列。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/515258.html
