【问题标题】:Create new column conditional on interval in other column [duplicate]以其他列中的间隔为条件创建新列[重复]
【发布时间】:2020-10-15 11:45:02
【问题描述】:

我的数据是

   Age
1:  13
2:   4
3:  14
4:  52
5:  63
6:  25
7:  53

我想要一个变量来说明以下特征:如果 1-13 岁 -> e,如果 14-25 岁 -> b,如果 26-100 岁 -> d

期望的输出

   Age Characterization
1:  13                e
2:   4                e
3:  14                b
4:  52                d
5:  63                d
6:  25                b
7:  53                d

输入

structure(list(Age = c(13L, 4L, 14L, 52L, 63L, 25L, 53L)), row.names = c(NA, 
-7L), class = c("data.table", "data.frame"))

【问题讨论】:

  • 看看cut()

标签: r dataframe


【解决方案1】:

尝试findInterval,如下所示

within(
  df,
  Characterization <- c("e", "b", "d")[1 + findInterval(Age, c(13, 25, 100), left.open = TRUE)]
)

给了

  Age Characterization
1  13                e
2   4                e
3  14                b
4  52                d
5  63                d
6  25                b
7  53                d

数据

> dput(df)
structure(list(Age = c(13L, 4L, 14L, 52L, 63L, 25L, 53L)), row.names = c(NA, 
-7L), class = "data.frame")

【讨论】:

  • Thomas,findInterval 函数前的“1 +”有什么意义?没有它,我得到一个长度为 5 的相同年龄向量的向量。
  • @KarthikS findInterval 返回从0 开始的值,我需要+1 因为我希望它作为向量c("e","b","d") 的索引
  • 请先搜索再回答,这个问题已经被问过百万次了。
猜你喜欢
  • 2012-08-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-08-30
  • 2020-11-01
  • 2020-04-25
  • 1970-01-01
相关资源
最近更新 更多