【问题标题】:Convert integers to vector in R using Tidyverse使用 Tidyverse 将整数转换为 R 中的向量
【发布时间】:2020-11-10 11:21:33
【问题描述】:

在我的数据集中,有一列包含整数,用于编码医疗程序后是否有“无”(0)、“轻微”(1) 或“严重”(2) 出血。

如何将这些整数值转换为描述性名称?我尝试使用 factor(levels = bleed, labels = c("none", "slight", "severe")) 进行处理,但这与我的 Tidyverse 风格 %>%-piped 数据争吵不符。

如何将这些数字转换为描述性标签?

【问题讨论】:

标签: r dplyr tidyverse recode


【解决方案1】:

在类似 tidyverse 的管道中,您可以在 mutate 语句中使用 recode 函数

library(dplyr)

df %>%
  mutate(your_int_var = recode(your_int_var, `0` = 'no', `1` = 'slight', `2` = 'severe'))

甚至更好地使用不引用拼接!!!

values <- c(`0` = 'no', `1` = 'slight', `2` = 'severe')

df %>% 
  mutate(your_int_var = recode(your_int_var, !!!values))

【讨论】:

    【解决方案2】:

    如果你只在你的整数向量上加一,你就可以使用简单的索引。

    在基础 R 中,这看起来像:

    bleeding <- c(0, 1, 0, 1, 1, 0, 2, 2, 0, 1)
    values <- c("no", "slight", "severe")
    
    bleeding <- values[bleeding + 1]
    
    bleeding
    #>  [1] "no"     "slight" "no"     "slight" "slight" "no"     "severe" "severe"
    #>  [9] "no"     "slight"
    

    或者在tidyverse中:

    df <- data.frame(bleeding = c(0, 1, 0, 1, 1, 0, 2, 2, 0, 1))
    
    df %>% mutate(bleeding  = c("no", "slight", "severe")[bleeding + 1])
    #>    bleeding
    #> 1        no
    #> 2    slight
    #> 3        no
    #> 4    slight
    #> 5    slight
    #> 6        no
    #> 7    severe
    #> 8    severe
    #> 9        no
    #> 10   slight
    

    【讨论】:

    • 光滑!只是为了完成它,“将值更改为描述性名称”,bleeding &lt;- values[bleeding + 1]
    • 也是一个有效的答案,不幸的是我不能同时接受...谢谢一百万。
    猜你喜欢
    • 2021-08-18
    • 1970-01-01
    • 2016-05-03
    • 1970-01-01
    • 2012-05-10
    • 2016-07-09
    • 2018-06-26
    • 2017-08-21
    • 2020-07-03
    相关资源
    最近更新 更多