基本上,我想使用dplyr
编写以下data.table
代码:
library(dplyr)
set.seed(1)
df <- data.frame(a = 2:3)
(df2 <- group_by(df, a) %>%
do({b <- runif(as.numeric(.[1, 1]))
data.frame(b, c = rep(sum(b), nrow(.)))}))
使用data.table
,by
参数将结果折叠为每组一行,我无法弄清楚如何在一个简洁的代码中避免这个参数。
library(data.table)
set.seed(1)
dt <- data.table(a = 2:3)
(dt[ , b := runif(as.numeric(.SD[1, 1])), by = a])
(dt[ , c := sum(b), by = a])
答案 0 :(得分:1)
您可以在方括号内的第二个参数中使用list()。
library(data.table)
set.seed(1)
dt <- data.table(a = 2:3)
(dt <- dt[ , list(b = runif(as.numeric(a))), by = a])
(dt[ , c := sum(b), by = a])