列中的值列在列表中

时间:2017-06-26 17:06:48

标签: r

我认为这是一项非常简单的任务,但无法弄清楚如何在R中完成。

这是我的数据框。

id <- c(1, 1, 1, 
    2, 2, 
    3, 3, 3, 3, 
    4, 4, 4, 
    5, 5, 
    6, 6, 6,
    7,
    8,
    9,
    10,
    11,
    12)
type <- c('A', 'B', 'K',
          'A', 'B',
          'B', 'C', 'D', 'E',
          'B', 'D', 'F',
          'A', 'G',
          'C', 'B', 'G',
          'B',
          'B',
          'B',
          'B',
          'B',
          'B')


    df <- data.frame(id, type)

我想完成两件事:

  1. type中最常出现的两个频段列入列表

  2. 使用该列表对原始数据框进行子集化。

  3. 因此,我将拉出任何包含A或B的行,然后拉出这些ID并获取所有这些ID的观察结果。这有意义吗?

    更新:

    根据Matt在下面的回答,我能够让它发挥作用,但它仍然不理想......必须有更好的方法,对吗?

    vec <- df %>%
      count(type, sort = TRUE)
    
    vec <- head(vec, 2)
    
    vecx <- as.list(unique(as.character(vec$type)))
    
    df3 <- df %>% 
      filter(type %in% vecx)
    

1 个答案:

答案 0 :(得分:1)

这样的事可能适合你。

library(dplyr)

n <- 2

df <- merge(as.data.frame(head(count(df, type, sort = TRUE), n)), df)[,c("id","type")]