根据现有变量的频率创建新变量

时间:2021-02-23 23:06:24

标签: r

我是 R 的新手,并试图弄清楚如何根据数据框中另一个变量的频率创建一个新变量。我有很多观察结果,并希望将它们按小(少于 15 个观察值)、中(15-20 ob​​s)和大(超过 20 ob​​s)分组,也就是说,我试图将 class_size 重新编码为序数变量。例如,如果我有以下数据:

df <- data.frame(student_id = c(A,B,C,D,E,F,G,H,I,J),
       class_size = c(10,15,20,15,35,25,11,40,40,10))

我想得到以下结果:

student_id  class_size  new_class_size 
   A              10        small
   B              15        medium  
   C              20        medium 
   D              15        small 
   E              35        large   etc...
   F
   G
   H
   I
   J

我查看了函数 case_when 但它没有给我我想要的东西。如何在 R 中重新编码 class_size 变量?

1 个答案:

答案 0 :(得分:-1)

我们可以将 cut 与指定为断点的 breakslabels

library(dplyr)
df <- df %>%
   mutate(new_class_size = cut(class_size, 
      breaks = c(-Inf, 15, 20, Inf), labels = c("small", "medium", "large")))

-输出

df <- structure(list(student_id = c("A", "B", "C", "D", "E", "F", "G", 
"H", "I", "J"), class_size = c(10, 15, 20, 15, 35, 25, 11, 40, 
40, 10)), class = "data.frame", row.names = c(NA, -10L))