在R中,选择在另一个列表中存在一列的行

时间:2015-12-16 23:20:11

标签: r

我是R的新手;有一个简单的绊脚石,我一直在寻找答案。

日期框架包括五年期间表现的个人名单。分析需要仅包括最近一年参与的那些人,因此我需要识别这些个体,然后从原始数据框中为所有列的个人选择所有记录(其他50个或更多列) )。

原始数据框架是performance_fiveyr;与我合作的变量是person_id和year。我已经尝试了许多可能的方法来获得我需要的东西;我在这里列出了其中一种方式......

第一步是创建过去一年参与的个人名单

person_current <- subset (x = performance_fiveyr, 
                  subset = year==2015, # keep only records from 2015
                  select = person_id # keep only the person_id variable
                  )

然后,下一步是从performance_fiveyr中选择Person_id中存在person_id的所有行,并返回所有其他列(总共超过50列)。

performance_current <- performance_fiveyr[performance_fiveyr$person_id 
                    %in% person_current, ]

我尝试过多次此类变体,最终得到所有列,没有行或所有行,也没有变量。

1 个答案:

答案 0 :(得分:1)

请始终提供一些示例数据:

set.seed(0)
p5 <- data.frame(id = sample(5, 20, replace=TRUE), year = sample(2010:2015, 20, replace=TRUE))
p5 <- p5[order(p5$id, p5$year), ]

我认为你走在了正确的轨道上。我认为以下内容符合您的要求:

current <- unique(p5[p5$year==2015, 'id'])
p_current <- p5[p5$id %in% current, ]
p_current
相关问题