从数据框中选择虚拟变量至少为1的实体

时间:2017-06-13 16:28:37

标签: r dplyr

我有这个数据框:

df=data.frame(student=c(rep("John",6),rep("Meredith",7),rep("Jeremy",5),rep("Audrey",8)),
               semester=c(1,2,3,4,5,6, 1,2,3,4,5,6,7, 1,2,3,4,5, 1,2,3,4,5,6,7,8),
               addQual=c( 1,0,0,0,1,0, 0,0,0,0,0,0,0, 0,0,1,0,1, 0,0,0,0,0,0,0,0))

它包含学生,他们所有学期以及每个学期是否参加了额外的资格课程(虚拟变量addQual = 1,如果他们接受了它)。 如何才能获得仅包含参加过其他资格课程的学生的数据框dfFilt?

因此,我想要的输出是:

dfFilt=data.frame(student=c(rep("John",6),rep("Jeremy",5)),
               semester=c(1,2,3,4,5,6,  1,2,3,4,5),
               addQual=c( 1,0,0,0,1,0,  0,0,1,0,1))

dplyr中的溶液是优选的。

2 个答案:

答案 0 :(得分:2)

基础R解决方案

MainFragment framgmentInstance=new MainFragment();
this.getSupportFragmentManager().beginTransaction().replace(R.id.content_main,framgmentInstance,"tag").commit();

答案 1 :(得分:1)

dplyr

dfFilt = df %>% group_by(student) %>% filter(sum(addQual)>=1)

   student semester addQual
    <fctr>    <dbl>   <dbl>
 1    John        1       1
 2    John        2       0
 3    John        3       0
 4    John        4       0
 5    John        5       1
 6    John        6       0
 7  Jeremy        1       0
 8  Jeremy        2       0
 9  Jeremy        3       1
10  Jeremy        4       0
11  Jeremy        5       1