如何在R中使用data.table统计满足特定条件的观测值数量
使用R data.table实现分组正负计数统计
完全可以使用data.table包实现该需求,实现逻辑简洁高效,以下是完整可运行代码:
1. 加载包与构造数据集
# 加载data.table包 library(data.table) # 构造示例数据集 data <- data.frame(ID = c(1,1,1,1,1,2,2,2,2), year = c(1,2,3,4,5,1,2,3,4), score = c(0.89943475,-3.51761975,1.54511640,-1.38284380,2.45591240,-1.89925250,0.83935451,-0.61843636,-0.70421765)) # 转换为data.table对象 dt <- as.data.table(data)
2. 分组统计核心代码
按ID分组统计时,利用R中逻辑值运算的特性:TRUE对应数值1,FALSE对应数值0,直接对判断条件求和即可得到对应计数,总观测数直接调用data.table内置的.N变量获取:
result <- dt[, .( pos = sum(score > 0), neg = sum(score < 0), total = .N ), by = ID]
3. 输出结果验证
打印result即可得到你需要的输出格式:
ID pos neg total 1: 1 3 2 5 2: 2 1 3 4
如果需要导出为csv格式,可以使用fwrite(result, "result.csv"),输出的csv内容和你给出的预期格式完全一致。
内容的提问来源于stack exchange,提问作者codemachino
相关产品推荐
相关产品推荐

