刚刚有个小伙伴提了这样一个问题:
李老师,请教一下,我有很多列数据,现在我想按自己定义的区间将每个数字替换成所在的区间,怎么实现呢?
非常简单,可以先生成一个示例数据:
library(tidyverse) |
这个示例数据有三列,符合提问者所说的很多列,然后我们需要按照自己定义的区间进行分段,通常会使用 cut() 函数,不过 cut() 函数的分段方式总会让人感觉很困惑,所以我更喜欢用不那么“省事”的 case_when() 函数,例如我们这里可以 0~1 分一段,1~5 分一段,然后其他的分一段,也就是 5~10,可以编写个分段函数:
cut_fun <- function(x) { |
between(x, 1, 5) 表示 1 <= x <= 5 。
然后就可以使用 mutate_all() 对所有列应用这个函数了:
df %>% |
也可以使用 mutate_at() 对某几列应用:
df %>% |
也可以使用 mutate_if() 对数值变量应用:
df %>% |
这样就解决了这个问题。
突发奇想,问问 chatGPT 如何解决这种问题:
![]()
挺老套的。。。 就 cut() 函数。
点击这里跳转到 RStata 短书平台获取附件:如何将多列数据替换成自定义的区间?
评论