【问题标题】:In R, how can I group by according to range?在 R 中,如何根据范围进行分组?
【发布时间】:2020-01-14 19:56:39
【问题描述】:

我有一个原始数据集,如下表。

  likes age
1  2295  61
2   740  69
3   210  57
4   207  49
5  1226  51
6  9016  63

使用这个数据集,我想要的输出也如下表

new_age        likes
age <60      1643
age >60      12051

new_age 分为两个范围。一个在60以下,一个在60以上。

您能帮忙制作这个想要的输出吗?

输出数据如下:

structure(list(likes = c(2295L, 740L, 210L, 207L, 1226L, 9016L), age = c(61, 69, 57, 49, 51, 63)), class = "data.frame", row.names = c(NA, -6L))

【问题讨论】:

  • aggregate(likes ~ age &gt;= 60, df1, sum).
  • 对于简单的拆分,您可以按age &gt;= 60 分组,或者超过1个休息使用cut

标签: r dplyr


【解决方案1】:

我们可以用逻辑表达式创建组

library(dplyr)
df1 %>%
    group_by(new_age = c('age > 60', 'age < 60')[(age < 60) + 1]) %>%
    summarise(likes = sum(likes))
# A tibble: 2 x 2
#  new_age  likes
#  <chr>    <int>
#1 age < 60  1643
#2 age > 60 12051

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-03-28
    • 2016-12-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-07-22
    相关资源
    最近更新 更多