R数据表选择行
我有'data1'并希望'data2',如果'Grade'=1的'Score'至少为4,我只包括'Student' 我唯一知道如何做到这一点的是按“等级”和“分数”来做,但这并不能给出期望的结果R数据表选择行,r,data.table,R,Data.table,我有'data1'并希望'data2',如果'Grade'=1的'Score'至少为4,我只包括'Student' 我唯一知道如何做到这一点的是按“等级”和“分数”来做,但这并不能给出期望的结果 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.fram
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))
如何才能指定我希望选择1年级成绩>=4的所有学生,而不仅仅是行您只需使用所需的条件进行连接即可保留
学生id
这行吗
库(data.table)
数据11:15
#> 2: 1 2 7
#> 3: 1 3 9
#> 4: 3 1 10
#>5:32 NA
#> 6: 3 3 3
数据3
#>学生成绩
#> 1: 1 1 5
#> 2: 1 2 7
#> 3: 1 3 9
#> 4: 3 1 10
#>5:32 NA
#> 6: 3 3 3
由(v0.3.0)于2020-04-29创建的可以做setDT(data1)[如果(分数[Grade==1]>=4).SD,by=Student]
或更麻烦的setDT(data1)[data1[Grade==1&Score>=4],.SD,on=.(Student)]
@David Arenburg非常感谢您,它在玩具示例中有效,但在实际数据中有效:“:参数长度为零”可能是因为您的学生没有成绩==1
?
library(data.table)
setDT(data1)
data1=data1[Grade==1 & Score >=4)