【问题标题】:Create Aggregate of Boolean Values in R在 R 中创建布尔值的聚合
【发布时间】:2020-05-19 17:17:05
【问题描述】:

我对 R 很陌生,我有一个包含四年数据的数据框,我正在尝试创建平均值。我遇到的问题是最后一列是布尔 True/False 列,我想基本上对该列中的值进行“投票”并获得多数(因为在以下情况下有 4 年的数据)投票是分开的,例如 2 true 和 2 false 我想默​​认为 true)。

df = new,ID 是 ctfips,所以我想为 4 年内的每个 ctfips 投票 MinorityTract。 (我的数据中没有缺失值)

      ctfips    year    avgpm    avg_income  ...  MinorityTract  
1   10001040100 2011    9.158084    70055    ...    FALSE
2   10001040100 2012    8.883191    74211    ...    FALSE
3   10001040100 2013    8.712092    71141    ...    FALSE
4   10001040100 2014    8.974976    61270    ...    TRUE
5   10001040201 2011    9.178633    54770    ...    TRUE
6   10001040201 2012    8.877811    49288    ...    TRUE

我试过了

new %>% group_by(ctfips) %>% sum(new$MinorityTract)

我明白为什么这不起作用,但我想不出一个正确的方法来解决这个问题。

任何帮助将不胜感激。

【问题讨论】:

    标签: r boolean


    【解决方案1】:

    尝试使用summarise 作为管道中的终端步骤:

    library(dplyr)
    new %>%
        group_by(ctfips) %>% 
        summarise(vote = sum(MinorityTract))
    

    实际上,对布尔列求和并没有错,而且应该已经给出了正确的总和。

    【讨论】:

    • 这很好用!它给了我每个 ctfips 的总和,我很确定我现在可以弄清楚如何获得一个新的布尔列,其中投票值 >= 2...非常感谢!
    【解决方案2】:

    我们可以从base R使用aggregate

    aggregate(MinorityTract ~ ctfips, new, sum)
    

    【讨论】:

      猜你喜欢
      • 2020-01-05
      • 1970-01-01
      • 2021-06-18
      • 2014-03-09
      • 2020-07-05
      • 1970-01-01
      • 1970-01-01
      • 2018-10-31
      • 2011-05-08
      相关资源
      最近更新 更多