【问题标题】:With R, how do i assign values to a new column based on numbers that fall within a range?使用 R,我如何根据范围内的数字为新列分配值?
【发布时间】:2020-06-12 19:55:26
【问题描述】:

我有一个名为报告年龄的列,范围从 0 到 100。

Report age|
         5
        82
        17
        39
        67

我想创建一个脚本来分配一个名为 Age Group 的新列

Report age|Age Group|
         5    5 to 9
        82  80 to 84
        17  15 to 19
        39  35 to 39 
        67  64 to 69

我知道我有没有

df <-df %>%
    mutate(Age_Group = ifelse(`Report age` <5, "Under 5", No)

我会得到两个结果。我想设置更多。 5 岁以下、5 岁至 9 岁、10 岁至 14 岁、15 岁至 19 岁,以此类推,直到“85 岁及以上”。

【问题讨论】:

标签: r if-statement dplyr conditional-statements


【解决方案1】:

我们可以使用cut来创建群组

library(dplyr)
brks <- c(5, 9, 15, 35, 39, 64, 69, 80, 84)

df %>%
   mutate(Age_Group = cut(`Report age`, 
      breaks = c(-Inf, brks, Inf),
      labels = c("under 5", paste(head(brks, -1),
                " to ", tail(brks, -1)), "85 years and over")))

【讨论】:

  • 而且,如果中断定义为brks &lt;- c(-Inf, 5, 9, 15, 19, 35, 39, 64, 69, 80, 84, Inf),您可以将labels = paste(head(brks, -1), "to", tail(brks, -1)) 作为参数添加到cut
  • 我将如何添加第一个标签和最后一个标签,因为它们会有所不同。而不是 0 到 4 我有“5 岁以下”。而不是 84 到 100 我有“85 岁及以上”。
  • @user35131 您可以使用c添加自定义标签
  • @user35131 我更新了帖子。你能检查一下吗
  • 这太完美了!谢谢。
猜你喜欢
  • 2022-10-16
  • 2014-09-02
  • 2021-03-24
  • 2014-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-01-23
  • 2022-12-04
  • 2022-11-30
相关资源
最近更新 更多