R 数据表在j中添加过滤计数

R 数据表在j中添加过滤计数,r,data.table,R,Data.table,我在R中有以下数据表: set.seed(5) my_data <- data.table(cat_1=c(1,1,1,2,2,1,1,1,3,4,5,4,5), cat_2 = sample(c("A","B"), 13, replace = T), ao = rnorm(13,500,10)) 有没有一种方法可以在同一个by语句中执行此操作而不必合并?类似(我知道这不起作用): 您可以使用数据表

我在R中有以下数据表:

set.seed(5)
my_data <- data.table(cat_1=c(1,1,1,2,2,1,1,1,3,4,5,4,5), 
                      cat_2 = sample(c("A","B"), 13, replace = T),
                      ao = rnorm(13,500,10))
有没有一种方法可以在同一个by语句中执行此操作而不必合并?类似(我知道这不起作用):


您可以使用
数据表中的
by
语句轻松完成此操作。试试这个:

my_data[,.(cat1_lines=.N,total_ao=sum(ao),A_lines=sum(cat_2=="A")),by=.(cat_1)]

   cat_1 cat1_lines  total_ao A_lines
1:     1          6 3015.5034       1
2:     2          2 1015.8838       2
3:     3          1  516.9518       0
4:     4          2  984.0768       2
5:     5          2  983.8361       2

像这样的<代码>我的数据[,列表(1类行=.N,总计行=总和(ao),A类行=总和(2类行=“A”)),由=列表(1类)]
是!!!太好了,我没想到要把逻辑向量求和,太好了!谢谢。刚刚发表了我的评论,作为对此的回答。
my_data[, .(cat1_lines = .N, A_lines = .N[cat_2 == "A"], 
                    total_ao = sum(ao, na.rm = T)), by = cat_1]
my_data[,.(cat1_lines=.N,total_ao=sum(ao),A_lines=sum(cat_2=="A")),by=.(cat_1)]

   cat_1 cat1_lines  total_ao A_lines
1:     1          6 3015.5034       1
2:     2          2 1015.8838       2
3:     3          1  516.9518       0
4:     4          2  984.0768       2
5:     5          2  983.8361       2