【问题标题】:Counting factor instance of several columns of factors [duplicate]几列因子的计数因子实例[重复]
【发布时间】:2020-08-14 05:07:38
【问题描述】:

我有一个这样的数据框:

> DF <- data.frame(V1=c("Yes", "Yes", "No"), V2=c("Yes", "No", "No"), V3=c("Yes", "Yes", "No"))
   V1  V2  V3
1 Yes Yes Yes
2 Yes  No Yes
3  No  No  No

不,我想使用类似于 mutate 的东西来计算每行中“是”的实例,以获得如下结果:

   V1  V2  V3 CountYes
1 Yes Yes Yes        3
2 Yes  No Yes        2
3  No  No  No        0

有简单的方法吗?很遗憾,我没有想法。

谢谢和BW, 一月

【问题讨论】:

    标签: r dplyr tidyverse


    【解决方案1】:

    我们可以在逻辑矩阵上使用rowSums

    DF$CountYes <- rowSums(DF == 'Yes')
    DF$CountYes
    #[1] 3 2 0
    

    【讨论】:

      【解决方案2】:

      这有点矫枉过正,但既然你已经用dplyr 标记了它:

      library(dplyr)
      
      DF %>%
        rowwise %>%
        mutate(CountYes = sum(c_across() == 'Yes'))
      

      输出:

      # A tibble: 3 x 4
      # Rowwise: 
        V1    V2    V3    CountYes
        <fct> <fct> <fct>    <int>
      1 Yes   Yes   Yes          3
      2 Yes   No    Yes          2
      3 No    No    No           0
      

      【讨论】:

      • 谢谢! Akruns 的回答有效,但我会记住你的方法。他们可能很快就会派上用场^^
      【解决方案3】:

      另一个基本 R 选项(但不像 rowSums @akrun 那样简单)

      DF$CountYes <- table(stack(data.frame(t(DF))))["Yes",]
      

      给了

      > DF
         V1  V2  V3 CountYes
      1 Yes Yes Yes        3
      2 Yes  No Yes        2
      3  No  No  No        0
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2016-05-09
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-06-20
        • 1970-01-01
        相关资源
        最近更新 更多