【问题标题】:How to count frequency of a categorical variable (level) for each row in a dataframe如何计算数据框中每一行的分类变量(级别)的频率
【发布时间】:2015-11-03 15:38:16
【问题描述】:

我想总结一下我的数据框中每个 ID 的每个级别(类别)的频率。例如,如何分别为 ID 4003491503 生成值 1、2、0?

我尝试了 tapplycount,但我不断收到错误。

    RespondentID   Case.A    Case.B    Case.C   Freq Red    Freq Blue   Freq Missing/NA
1     4003491503    Red      Blue      Blue      <b> 1            2          0 </b>
2     4003491653    Blue     Red       Red   
3     4003491982    Red      Blue      Red   
4     4003494862    Red      Red        NA   
15    4003494880   Blue     Blue      Blue    

【问题讨论】:

    标签: r dataframe categorical-data


    【解决方案1】:

    我们可以melt以'id.var'为'RespondentID'的数据集,用table获取频率将输出转换为data.frame,更改列名和cbind与原始数据集.

    library(reshape2)
    df2 <- as.data.frame.matrix(table(melt(df1, id.var='RespondentID')[-2], useNA='ifany'))
    colnames(df2) <- paste0('Freq', colnames(df2))
    cbind(df1, df2)
    #   RespondentID Case.A Case.B Case.C FreqBlue FreqRed FreqNA
    #1    4003491503    Red   Blue   Blue        2       1      0
    #2    4003491653   Blue    Red    Red        1       2      0
    #3    4003491982    Red   Blue    Red        1       2      0
    #4    4003494862    Red    Red   <NA>        0       2      1
    #15   4003494880   Blue   Blue   Blue        3       0      0
    

    【讨论】:

      猜你喜欢
      • 2019-12-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-01-07
      • 2021-12-12
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多