练习包括通过因子的组合和R中的data.table来聚合值的数值向量.以下面的数据表为例:
require (data.table)
require (plyr)
dtb <- data.table (cbind (expand.grid (month = rep (month.abb[1:3], each = 3),
fac = letters[1:3]),
value = rnorm (27)))
Run Code Online (Sandbox Code Playgroud)
请注意,'month'和'fac'的每个独特组合都会出现三次.因此,当我尝试通过这两个因素平均值时,我应该期望一个包含9个唯一行的数据框:
(agg1 <- ddply (dtb, c ("month", "fac"), function (dfr) mean (dfr$value)))
month fac V1
1 Jan a -0.36030953
2 Jan b -0.58444588
3 Jan c -0.15472876
4 Feb a -0.05674483
5 Feb b 0.26415972
6 Feb c -1.62346772
7 Mar a 0.24560510
8 Mar b 0.82548140
9 Mar c 0.18721114
Run Code Online (Sandbox Code Playgroud)
但是,当与data.table聚合时,我会不断得到两个因素的每个冗余组合提供的结果:
(agg2 <- dtb[, value …Run Code Online (Sandbox Code Playgroud) 请考虑以下代码.
library (reshape2)
x = rnorm (20)
y = x + rnorm (rnorm (20, sd = .01))
dfr <- data.frame (x, y)
mlt <- melt (dfr)
Run Code Online (Sandbox Code Playgroud)
当我尝试用dcast转换此操作时,
dcast (mlt, value ~ variable)
Run Code Online (Sandbox Code Playgroud)
我得到一个有三列的数据框(例如,不适合散点图).如何使用dcast重新生成原始数据框?