[英]R: Stratified random sample proportion of unique ID's by grouping variable
[英]Calculating proportion of values using condition and grouping by ID in R
我有一个数据表:
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
吗?
可以用逻辑值的mean
计算比例。 尝试 -
library(data.table)
DT[, .(above_80 = mean(score >= 80),below_80 = mean(score < 80)), ID]
# ID above_80 below_80
#1: 1 0.500 0.500
#2: 2 0.667 0.333
#3: 3 0.500 0.500
当我们对它们进行数学计算时,逻辑值( TRUE
和FALSE
)分别被视为 1 和 0。
这几个例子将有助于澄清 -
mean(c(TRUE, FALSE, TRUE, FALSE))
#[1] 0.5
mean(c(TRUE, TRUE, TRUE, FALSE))
#[1] 0.75
mean(c(TRUE, TRUE, TRUE, TRUE))
#[1] 1
score >= 80
类似地返回逻辑值,并对它们取mean
为我们提供它们的比例。
数据
DT <- data.table(ID = c(1,1,1,1,2,2,2,3,3),
score=c(78, 93, 88, 50, 100, 95, 71, 90, 75))
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.