代码之家  ›  专栏  ›  技术社区  ›  Nicholas

R-统计出现在数据帧中并分组的列表中单词的总出现次数

r
  •  1
  • Nicholas  · 技术社区  · 5 年前

    我有一个这样的数据框:

    ID   Word
    1    Tree
    1    House
    1    Tree
    2    Snail
    2    Tree
    3    Car
    

    我有一个要检查的关键字列表:

    (House, Tree, Bird)
    

    我想知道每个ID有多少次,我的关键字列表中的任何单词都会出现。

    ID   Count
    1     3
    2     1
    3     0
    

    我不知道该怎么处理。我知道如何计算一个单词在每个ID中出现的次数,但不知道另一个列表中的单词出现的次数。

    1 回复  |  直到 5 年前
        1
  •  2
  •   akrun    5 年前

    我们可以创建一个逻辑索引并获取 sum 按“ID”分组。不确定“v1”是否 vector list 列表 ,然后 unlist(v1) 使用相同的代码)

    library(dplyr)
    df1 %>% 
       group_by(ID) %>% 
       summarise(Count = sum(Word %in% v1))
    # A tibble: 3 x 2
    #     ID Count
    #  <int> <int>
    #1     1     3
    #2     2     1
    #3     3     0
    

    或者 filter count

    df1 %>% 
       filter(Word %in% v1) %>%
       count(ID, .drop = FALSE)
    

    数据

    v1 <- c("House", "Tree", "Bird")
    df1 <- structure(list(ID = c(1L, 1L, 1L, 2L, 2L, 3L), Word = c("Tree", 
    "House", "Tree", "Snail", "Tree", "Car")), class = "data.frame", 
    row.names = c(NA, 
    -6L))