我是新来的
data.table
包装和我遇到的问题,希望有一个简单的解决方案。我想过滤
数据.表
,添加一些列
数据.表
并按其中的一些列分组
数据.表
包括我创建的列之一
在我的
j
条款。
如果我使用
dplyr
,应该是这样的:
library(dplyr)
mtcars %>%
filter(vs == 1) %>%
mutate(trans = ifelse(am == 1, "Manual", "Auto")) %>%
group_by(gear, carb, trans) %>%
summarise(num_cars = n(),
avg_qsec = mean(qsec))
# A tibble: 6 x 5
# Groups: gear, carb [?]
gear carb trans num_cars avg_qsec
<dbl> <dbl> <chr> <int> <dbl>
1 3 1 Auto 3 19.9
2 4 1 Manual 4 19.2
3 4 2 Auto 2 21.4
4 4 2 Manual 2 18.6
5 4 4 Auto 2 18.6
6 5 2 Manual 1 16.9
我的尝试
数据.表
不起作用。
library(data.table)
dtmt <- as.data.table(mtcars)
dtmt[vs == 1,
.(num_cars = .N,
avg_qsec = mean(qsec),
trans = ifelse(am == 1,
"Manual", "Auto")),
by = list(gear, carb, trans)]
Error in eval(bysub, xss, parent.frame()) : object 'trans' not found
所以我在我的专栏里
J
子句不能用于
by
?如果我不尝试改变
am
列。
dtmt[vs == 1,
.(num_cars = .N,
avg_qsec = mean(qsec)),
by = list(gear, carb, am)]
gear carb am num_cars avg_qsec
1: 4 1 1 4 19.22
2: 3 1 0 3 19.89
3: 4 2 0 2 21.45
4: 4 4 0 2 18.60
5: 4 2 1 2 18.56
6: 5 2 1 1 16.90
谢谢!