當有兩個標識符時,我想按組獲取平均值。假設我有以下數據集:
set.seed(123)
df <- data.frame(id = 1:2,
id2 = c("a","b", "c","c", "b","c", "a","b", "c","b"),
var1 = runif(10))
我正在嘗試用數據表獲得兩組的平均值。我想用平均值創建另一個列(avg)。這意味著,當平均值與id和id2匹配時,它將在行之間重復。這就是我要做的:
setDT(df)[, avg := mean(var1), by=list(id,id2)]
所以,我想澄清一下。有兩個值標識為id=1和id2=a。平均值為(0.287577 5+0.5281055)/ 2=0.4078415。我希望該值在第1行和第7行旁邊重復,這兩行對應于id=1和id=2=a,并依次用于所有其他平均值。我該怎么做?
您提供的代碼也可以使用
data.table
完成相同的任務。注意,setDT
將轉換相同的df,如果打印df,則不會創建額外的列。