【问题标题】:Converting continuous variable into discrete values (alphanumeric) in R . The Ranges are alpha numeric [duplicate]在 R 中将连续变量转换为离散值(字母数字)。范围是字母数字[重复]
【发布时间】:2017-06-24 06:27:58
【问题描述】:

我看到一个类似的帖子-https://stackoverflow.com/questions/6104836/splitting-a-continuous-variable-into-equal-sized-groups。但我的问题是,范围必须是字符串。 下面是我的数据框

df
name salary bonus increment(%)
AK   22200  120   2
BK   55000   34   .1
JK   12000  400   3
VK   3400   350   15
DK   5699    NA    NA

df = structure(list(name = c("AK", "BK", "JK", "VK", "DK"), salary = c(22200L, 55000L, 12000L, 3400L, 5699L), bonus = c(120L, 34L, 400L, 350L, NA), `increment(%)` = c(2, 0.1, 3, 15, NA)), .Names = c("name", "salary", "bonus", "increment(%)"), row.names = c(NA, -5L), class = "data.frame")

salary 列需要修改为"< 10K""10K-20K""20K-30K""> 30K" 等范围,这些值是字母数字,cut by defined interval 中未提及

name salary  bonus increment(%)
AK   20K-30K  120    2
BK   >30K      34   .1
JK   10K-20K  400    3
VK   <10K     350    15
DK   <10K      NA    NA

然而,在使用 cut by r 定义的区间后没有产生预期的结果,下面是代码 df$salary&lt;-cut(df$salary,breaks = c(0,10000,20000,30000,60000),include.lowest = TRUE)

输出是

  name        salary bonus increment(%)
  1   AK (2e+04,3e+04]   120          2.0
  2   BK (3e+04,6e+04]    34          0.1
  3   JK (1e+04,2e+04]   400          3.0
  4   VK     [0,1e+04]   350         15.0
  5   DK     [0,1e+04]    NA           NA

【问题讨论】:

  • 伙计们,这不是一个重复的问题,这里的范围本质上是一个字母数字值。

标签: r


【解决方案1】:

您可以使用dplyr 包中的case_when 函数。 df2 是最终输出。

library(dplyr)

df2 <- df %>%
  mutate(salary = case_when(
    salary < 10000                   ~ "<10K",
    salary >= 10000 & salary < 20000 ~ "10K-20K",
    salary >= 20000 & salary < 30000 ~ "20K-30K",
    salary >= 30000                  ~ ">30K",
    TRUE                             ~ "NA"
  ))

【讨论】:

  • 谢谢,case_when 似乎非常适合这种情况。只是一个在 case_when 中使用了 .$ infornt 工资的 twik,就像在我的 R 工作室中一样,它抛出了一个错误,因为无法找到工资变量。
猜你喜欢
  • 2015-11-18
  • 1970-01-01
  • 1970-01-01
  • 2021-08-03
  • 2021-05-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多