我希望使用
以下是一个
现在我想在“g”上执行“by=”操作,第9行和第10行将被合并,因为它们具有相同的值“NA”。
data.table
,但如果by
对应缺失值(NA
),我想跳过j
部分的计算:以下是一个
data.table
的示例数据。library(data.table)
DT <- data.table(y=10, g=c(1,1,1,2,2,2,2,2,NA,NA))
看起来像这样
> DT
y g
1: 10 1
2: 10 1
3: 10 1
4: 10 2
5: 10 2
6: 10 2
7: 10 2
8: 10 2
9: 10 NA
10: 10 NA
现在我想在“g”上执行“by=”操作,第9行和第10行将被合并,因为它们具有相同的值“NA”。
> DT[,.N, by=g]
g N
1: 1 3
2: 2 5
3: NA 2
我希望保留输出结果中的 NA
行,但希望在结果中跳过计算部分,即当 g
为 NA
时,得到一个空的 N
输出结果。
> DT[,.N, by=g]
g N
1: 1 3
2: 2 5
3: NA NA
我以为可以通过.GRP
访问g
的值,但这只给出了组索引而不是值。是否可能使计算基于by
变量的缺失状态而有条件?
j
中访问你的分组变量的值。如果在j
中使用它,它的长度为一(参见FAQ 2.10 Inside each group, why are the group variables length-1?)。因此,类似DT[ , if(!is.na(g)) .(n = .N) else NA_integer_, by = g]
的语句就可以工作了。 - Henriki
еҸӮж•°дёӯдҪҝз”Ё!is.na(g)
иҝҮж»Өжңүд»Җд№Ҳй—®йўҳеҗ—пјҹеҚіDT[!is.na(g),.N, by=g]
гҖӮиҜ·жіЁж„ҸдҝқжҢҒеҺҹж„ҸпјҢж¶ҰиүІиҜӯиЁҖд»ҘдҪҝе…¶жӣҙе®№жҳ“зҗҶи§ЈгҖӮ - Scott RitchieNA
行。 但我仍希望在随后的连接中保留它。 - ekstroemNA
组应该被完全跳过。 - UweNA
。 - ekstroem