【问题标题】:Count frequency of same value in several columns数列中相同值的计数频率
【发布时间】:2019-07-25 10:18:08
【问题描述】:

我对 R 很陌生,我遇到了一个我认为很容易解决的问题,但我找不到答案。

我有一个名为 clg 的数据框,其中基本上我有 3 列 date, X1, X2。 X1 和 X2 是国家队的名称。 X1 和 X2 具有相同的国家/地区列表。

我只是想将两列中每个国家/地区的频率计算为总数。

到目前为止,我只能计算X1 列的频率,但我没有找到将两列相加的方法。

clt <- as_tibble(na.omit(count(clg, clg$X1)))

我想获得一个数据框,其中第一列中我有唯一的国家,第二列中出现X1 + X2 的总和。

【问题讨论】:

    标签: r


    【解决方案1】:

    您可以使用unlist() 和table() 获取总计数。将其包装在 data.frame() 中将为您提供所需的两列输出。

    clg <- data.frame(date=1:3, 
                      X1=c("nor", "swe", "alg"), 
                      X2=c("swe", "alg", "jpn"))
    
    data.frame(table(unlist(clg[c("X1", "X2")])))
    #   Var1 Freq
    # 1  alg    2
    # 2  nor    1
    # 3  swe    2
    # 4  jpn    1
    

    【讨论】:

      【解决方案2】:

      有了tidyverse,我们可以把gather变成'long'格式,然后再做count

      library(tidyverse)
      gather(clg, key, Var1, -date) %>%
           count(Var1)
      # A tibble: 4 x 2
      #  Var1      n
      #  <chr> <int>
      #1 alg       2
      #2 jpn       1
      #3 nor       1
      #4 swe       2
      

      数据

      clg <- structure(list(date = 1:3, X1 = structure(c(2L, 3L, 1L), .Label = c("alg", 
      "nor", "swe"), class = "factor"), X2 = structure(c(3L, 1L, 2L
      ), .Label = c("alg", "jpn", "swe"), class = "factor")),
         class = "data.frame", row.names = c(NA, 
      -3L))
      

      【讨论】:

        【解决方案3】:

        您可以通过两个步骤来实现您的目标。在第一步中,您计算​​每个国家/地区的出现次数总和。在下一步中,您将两个 df 连接在一起并计算总和。

           X1_sum <- df %>%
              dplyr::group_by(X1) %>%
              dplyr::summarize(n_x1 = n())
        
           X2_sum <- df %>%
              dplyr::group_by(X2) %>%
              dplyr::summarize(n_x2 = n()
        
           final_summary <- X1_sum %>%
              # merging data with by country names
              dplyr::left_join(., X2_sum, by = c("X1", "X2")) %>%
              dplyr::mutate(n_sum = n_x1 + n_x2)
        

        【讨论】:

          猜你喜欢
          • 2016-06-30
          • 1970-01-01
          • 2021-09-02
          • 2021-07-25
          • 1970-01-01
          • 2022-12-04
          • 1970-01-01
          • 2010-11-28
          相关资源
          最近更新 更多