【发布时间】:2020-04-27 13:07:22
【问题描述】:
data1=data.frame("Student"=c(1, 1, 1, 2, 2, 2, 3, 3, 3),
"Grade"=c(1, 2, 3, 1, 2, 3, 1, 2, 3),
"Score"=c(5, 7, 9, 2, 2, 3, 10, NA, 3))
data2=data.frame("Student"=c(1, 1, 1, 3, 3, 3),
"Grade"=c(1, 2, 3, 1, 2, 3),
"Score"=c(5, 7, 9, 10, NA, 3))
我有 'data1' 并希望有 'data2',如果 'Grade' = 1 的 'Score' 至少为 4,我只包括 'Student'。
我对如何做到这一点的唯一了解是通过“成绩”和“分数”来做到这一点,但这并不能提供理想的输出。
library(data.table)
setDT(data1)
data1=data1[Grade==1 & Score >=4)
如何指定我希望选择所有 1 年级得分>=4 的学生,而不仅仅是 ROWS
【问题讨论】:
-
可以做
setDT(data1)[, if(Score[Grade == 1] >= 4) .SD, by = Student]或更麻烦的setDT(data1)[data1[Grade == 1 & Score >= 4], .SD, on = .(Student)] -
@David Arenburg 非常感谢它在玩具示例中有效,但在真实数据中':参数长度为零'
-
可能是因为你有学生没有
Grade == 1?
标签: r data.table