R语言中基于time列给数据框新建interval区间列的实现方法
R数据框新增区间字段实现方案
最简实现(基础R,仅需一行代码)
利用ceiling()向上取整的特性即可完美匹配你的分组规则:
df$interval <- ceiling(df$time / 10) * 10
运行后得到的结果如下:
| time | interval |
|---|---|
| 7.1 | 10 |
| 8.2 | 10 |
| 9.3 | 10 |
| 10.4 | 20 |
| 11.5 | 20 |
| 12.6 | 20 |
| 50.9 | 60 |
完全符合你要求的区间映射逻辑:0.0-10.0(含10)对应10、10.1-20.0对应20,以此类推。
其他可选实现
如果后续你的区间规则变得更复杂(比如非等距区间、自定义区间名),可以用cut()函数实现:
# 根据数据最大值自动生成区间边界 max_break <- ceiling(max(df$time)/10)*10 df$interval <- as.numeric(as.character( cut(df$time, breaks = seq(0, max_break, 10), labels = seq(10, max_break, 10), include.lowest = TRUE) ))
如果是tidyverse技术栈用户,也可以用dplyr的管道写法:
library(dplyr) df <- df %>% mutate(interval = ceiling(time/10)*10)
内容的提问来源于stack exchange,提问作者Jo-Achna
相关产品推荐
相关产品推荐

