【发布时间】:2021-09-29 18:54:37
【问题描述】:
我有一个数据表:
DT <- data.table(ID = c(1,1,1,1,2,2,2,3,3), score=c(78, 93, 88, 50, 101, 95, 89, 90))
# DT output
ID, score
1, 78
1, 93
1, 88
1, 50
2, 100
2, 95
2, 71
3, 90
3, 75
我想获取每个ID得分高于和低于80的比例。例如:
ID, above_80, below_80
1, 0.5, 0.5
2, 0.67, 0.33
3, 0.5, 0.5
我尝试使用以下方法:
proportion_DT <- DT[,list(above_80 = sum(score >= 80)/sum(score < 80),
below_80 = sum(score < 80)/sum(score >= 80)), by=ID]
但这并没有生成正确的表格。使用data.table可以做到这一点吗?
【问题讨论】:
-
你必须除以每个ID的行数,而不是相反的比例。否则值不正确
标签: r list sum data.table grouping