我有一个如下所示的数据框:
name val type group
1 A3330 184 ave IX13
2 A3330 42 min IX13
3 A1473 195 ave IX01
4 A1473 93 min IX01
5 A3330 80 ave BG12
6 A3330 44 min BG12
7 A1473 15 ave IX3
8 A1473 91 min IX3
如果类型相同,我想平均每个val的值。因此,尽管它们是不同的组,但是1和5是平均的。同样适用于2和6,3和7,以及4和8.最后,我希望有一个新的数据框如下所示:
name val type
A3330 132 ave
A333 43 min
A1473 105 ave
A1473 92 min
我在想我应该这样做:
for (metric in type)
for(names in name)
mean(df[df$name==names && type==metric, df$type])
}
}
但是在我有限的R经验中,总有一种比循环更好的方法。 有什么建议吗?
答案 0 :(得分:2)
Haven自己测试过但是使用data.table包,这样的东西对你有用 -
library(data.table)
df <- data.table(df)
df2 <- df[,
list(
meanval = mean(val)
),
by = c('name','type')
]