【问题标题】:assign frequency as new column in r将频率分配为 r 中的新列
【发布时间】:2020-06-21 10:19:54
【问题描述】:

假设我有以下字符串:

a <- c("a", "b", "c", "b", "a", "a", "e")
b <- table(a)

b 给出了 a 中每个元素的频率。如何创建一个包含两列的数据框,第一列是 a,第二列是每个元素的频率?

输出应如下所示:

f <- c(3, 2, 1, 2, 3, 3, 1)
output <- data.frame(a,f)

非常感谢您!

【问题讨论】:

    标签: r frequency


    【解决方案1】:

    我们可以使用add_count创建一个新列

    library(tibble)
    library(dplyr)
    tibble(a) %>% 
         add_count(a)
    

    或者在base Rave

    data.frame(a, freq = ave(seq_along(a), a, FUN = length))
    

    或者如果它需要来自'b',则与'b'的名称和向量'a'进行匹配以扩展table输出,然后将table对象转换为data.frame as.data.frame

    as.data.frame(b[a])
    #  a Freq
    #1 a    3
    #2 b    2
    #3 c    1
    #4 b    2
    #5 a    3
    #6 a    3
    #7 e    1
    

    【讨论】:

      【解决方案2】:

      使用合并:

      merge(as.data.frame(a), as.data.frame(table(a)))

      #  a Freq
      #1 a    3
      #2 a    3
      #3 a    3
      #4 b    2
      #5 b    2
      #6 c    1
      #7 e    1
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2015-03-31
        • 2013-11-13
        • 2020-03-06
        • 2019-06-27
        • 1970-01-01
        • 2018-06-17
        • 2020-09-03
        • 2014-06-14
        相关资源
        最近更新 更多