【发布时间】:2016-02-11 12:36:37
【问题描述】:
我有一个数据集,我需要用一个变量 (Day) 进行拆分,然后在另一个变量 (Group) 的组之间进行比较,执行每组统计数据(例如 mean)并进行测试。
这是我设计的一个示例:
require(data.table)
data = data.table(Day = rep(1:10, each = 10),
Group = rep(1:2, times = 50),
V = rnorm(100))
data[, .(g1_mean = mean(.SD[Group == 1]$V),
g2_mean = mean(.SD[Group == 2]$V),
p.value = t.test(V ~ Group, .SD, alternative = "two.sided")$p.value),
by = list(Day)]
产生:
Day g1_mean g2_mean p.value
1: 1 0.883406048 0.67177271 0.6674138
2: 2 0.007544956 -0.55609722 0.3948459
3: 3 0.409248637 0.28717183 0.8753213
4: 4 -0.540075365 0.23181458 0.1785854
5: 5 -0.632543900 -1.09965990 0.6457325
6: 6 -0.083221671 -0.96286343 0.2011136
7: 7 -0.044674252 -0.27666473 0.7079499
8: 8 0.260795244 -0.15159164 0.4663712
9: 9 -0.134164758 0.01136245 0.7992453
10: 10 0.496144329 0.76168408 0.1821123
我希望得到这个结果的方式不那么迂回。
【问题讨论】:
-
您可以使用
dcast获得平均值,即dcast(data, Day~Group, value.var='V', mean)
标签: r data.table grouping