【问题标题】:Filter with a condition [closed]过滤条件[关闭]
【发布时间】:2016-08-20 11:34:05
【问题描述】:
df <- data.frame(month_key = c(rep(201504, 2), rep(201505, 3)),
                 id = c(1, 2, 1, 2, 3))

我有一个像 df 这样的数据框,每个月的 ID 不需要不同。 我想过滤我的数据框并只保留第一个month_key中出现的ID(在我的示例中,id = 1和2)。 我不想在第一个月选择我的 id 并在另一个月选择 inner_join ... 谢谢

【问题讨论】:

  • ...我说的是inner_join,但它很重,我需要别的东西
  • 考虑提供另一个包含您预期输出的对象。
  • 您还需要知道,否决票代表您的问题的质量。您没有包含预期的输出或您尝试过的任何类型的代码,因此投反对票(我没有投反对票)。
  • 但是我无法显示我的数据,我用内部连接解释了我的方法并举了一个例子,还是谢谢你

标签: r dplyr


【解决方案1】:
ind <- df$id[df$month_key == df$month_key[1]]
df[df$id %in% ind,]
#  month_key id
#1    201504  1
#2    201504  2
#3    201505  1
#4    201505  2

【讨论】:

  • 非常感谢我的朋友!如果有人可以提供 dplyr 解决方案,那会很酷。谢谢
  • @user3 DF[cond, ] 与 DF %>% filter(cond) 大致相同,所以df %&gt;% filter(id %in% id[ month_key == month_key[1]]) 是这个答案的翻译。
  • 感谢 Frank 的解决方案
  • 如果没有订购月份键,这个解决方案也可以吗?
  • @user3527451,如果要获取出现在所有month_key中的id,那么,Reduce(intersect, split(df$id, df$month_key))
猜你喜欢
  • 2021-06-18
  • 1970-01-01
  • 2020-11-01
  • 2012-03-03
  • 1970-01-01
  • 2013-03-07
  • 1970-01-01
  • 2015-02-13
  • 1970-01-01
相关资源
最近更新 更多