【问题标题】:Tally()ing Multiple Observations In an Entire Data Frame在整个数据框中统计()多个观测值
【发布时间】:2020-11-06 23:29:29
【问题描述】:

我无法弄清楚如何处理包含我想要统计的多个观察结果的列。例如:

HTML/CSS;Java;JavaScript;Python;SQL

这是数据框一列的单元格之一,我想统计每种编程语言的出现次数。这是应该用 str_detect()、corpus() 解决的问题,还是我没有看到其他方法?

我的目标是将这些语言(HTML、CSS、Java、JavaScript、Python、SQL 等)中的每一种都制成一个列名,并记录它们在该数据列中出现的次数框架。

我觉得我的措辞可能很奇怪,所以如果您需要任何澄清,请告诉我。

【问题讨论】:

标签: r dataframe unique tally


【解决方案1】:

tidyverse 中,您可以使用separate_rowscount

library(dplyr)
df %>% tidyr::separate_rows(PL, sep = ';') %>% count(PL)

在base R中,我们可以用分号分割字符串并用table计数:

table(unlist(strsplit(df$PL, ';')))
#If you need a dataframe
#stack(table(unlist(strsplit(df$PL, ';'))))

【讨论】:

    【解决方案2】:

    如果您只想要每个标签的总数,您可以使用unnest_longer 和分组的count

    # using @DPH's example data
    library(dplyr)
    library(tidyr)
    
    df %>%
      mutate(across(PL, strsplit, ";")) %>%
      unnest_longer(PL) %>%
      group_by(PL) %>%
      count()
    
    # A tibble: 6 x 2
    # Groups:   PL [6]
      PL             n
      <chr>      <int>
    1 HTML/CSS       2
    2 Java           1
    3 JavaScript     2
    4 Python         1
    5 R              3
    6 SQL            2
    

    【讨论】:

    • 谢谢你,安德鲁。这就是我一直在寻找的。​​span>
    【解决方案3】:

    如果我正确理解了您的问题,这将是解决方案:

    library(dplyr)
    library(tidyr)
    
    # demo data
    df <- dplyr::tibble(ID = c("Line 1: ","Line 2:"), 
                        PL = c("HTML/CSS;JavaScript;Python;SQL;R","R;HTML/CSS;Java;JavaScript;SQL;R"))
    
    # calculations
    df %>% 
      dplyr::mutate(PLANG = stringr::str_split(PL, ";")) %>% 
      tidyr::unnest(c(PLANG)) %>% 
      dplyr::group_by(ID, PLANG) %>% 
      dplyr::count() %>% 
      tidyr::pivot_wider(names_from = "PLANG", values_from = "n", values_fill = 0)
    
      ID         `HTML/CSS` JavaScript Python     R   SQL  Java
      <chr>           <int>      <int>  <int> <int> <int> <int>
    1 "Line 1: "          1          1      1     1     1     0
    2 "Line 2:"           1          1      0     2     1     1
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-07-18
      • 2018-02-08
      • 1970-01-01
      • 2016-11-19
      • 2012-07-19
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多