1

我在问自己以下问题。

data.table有没有使用包而不是使用以下代码来解决问题的聪明方法:

install.packages("dplyr")
library(dplyr)
data %>% group_by(Ticker, Year) %>% summarise(count = length(Value[!is.na(Value)]))
4

1 回答 1

1

你是这个意思吗?

(注意:示例数据基于您在此处之前的帖子中提供的数据)。

library(data.table);
setDT(df)[, .(count = sum(!is.na(Value))), by = list(RANDOM, Year)];
#    RANDOM Year count
# 1:      D 2010     2
# 2:      C 2010     2
# 3:      B 2008     5
# 4:      D 2009     4
# 5:      D 2008     4
# 6:      A 2009     3
# 7:      B 2009     5
# 8:      C 2008     4
# 9:      A 2008     8
#10:      A 2010     2
#11:      B 2010     1
#12:      C 2009     8

样本数据

set.seed(2017);
RANDOM <- sample(c("A","B","C","D"), size = 100, replace = TRUE)
Year <- sample(c(2008,2009,2010), 100, TRUE)
Value <- sample(c(0.22, NA), 100, TRUE)
df <- data.frame(RANDOM, Year, Value);
于 2018-05-11T10:45:17.707 回答