我想使用
data.table
进行一些数据整理操作,并希望我的结果数据表中不包括分组变量。
这是一个最小化示例:
library("data.table")
DT <- data.table(x = 1:10, grp = rep(1:2,5))
DT[, .(mmm = mean(x)), by = grp]
这将产生:
grp mmm
1: 1 5
2: 2 6
这一切都很好。但是,我希望不要出现 grp
变量。可以通过将 data.table
命令链接在一起并设置 grp := NULL
,或者只是丢弃该变量来解决此问题。但是,在第一个调用中是否可以避免它,使我只返回 mmm
?
DT[, .(mmm = mean(x)), by = grp][, grp := NULL][]
的替代方案可以是DT[, .(mmm = DT[, .(mmm = mean(x)), by = grp]$mmm)]
。 - JaapDT[..., by = grp][, !'grp']
或者DT[..., by = grp][, grp := NULL]
的哪一点呢? - eddi[, grp := NULL]
之后才释放内存,因此希望节省这一初始步骤。并不是说我不同意[, grp := NULL]
在美学和功能上更加令人愉悦。 - ekstroemby
,而不使用那个额外的内存列(我也很难想象那一列会成为瓶颈)。我没有检查过,但也许tapply
在这种特殊情况下会使用更少的内存(但你将付出严重的性能代价)。 - edditapply
的时间惩罚使得我认为我无法追求这条路。 - ekstroem