r - 如何计算R中特定条件的观察次数?
问题描述
我有一个这样的数据集:
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)
ID, year, score
1, 1, 0.89943475
1, 2, -3.51761975
1, 3, 1.54511640
1, 4, -1.38284380
1, 5, 2.45591240
2, 1, -1.89925250
2, 2, 0.83935451
2, 3, -0.61843636
2, 4, -0.70421765
我想创建一个数据表,它汇总上述数据并计算正负ID
时的观察次数,如下所示:score
ID, pos, neg, total
1, 3, 2, 5
2, 1, 3, 4
这可以data.table
在 R 中使用吗?
解决方案
akrun 答案的替代方案:
data[, .(pos = sum(score >= 0), neg = sum(score < 0), total = .N), by = ID]
# ID pos neg total
# <num> <int> <int> <int>
# 1: 1 3 2 5
# 2: 2 1 3 4
数据
data <- setDT(structure(list(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.5451164, -1.3828438, 2.4559124, -1.8992525, 0.83935451, -0.61843636, -0.70421765)), class = c("data.table", "data.frame"), row.names = c(NA, -9L)))
推荐阅读
- javascript - 我想要一种方法来使用另一个html代码在同一页面上调用js中存在的html代码
- java - 无法注册此节点:发送注册请求时出错:将 Selenium Grid 节点连接到 Grid Hub 失败
- node.js - 将 NodeJs 应用程序移动到新服务器导致 npm install 出错
- reactjs - React 路由器:exact 不适用于 TypeScript
- sql - 根据表中的值运行动态 sql,然后将它们附加到相同的结果集
- android - Android Play 商店更新等待时间 (08/2020)
- reactjs - 在 React Project 中,如何更改和自定义节点模块
- reactjs - react-datepicker 删除其他月份同一天的颜色
- google-cloud-datastore - 谷歌云数据存储,同时读/写,可能发生冲突?
- entity-framework-6 - 实体框架在下一个查询中包含持久性