将字符列转换为R中的数字

水果馅饼

我不知道为什么我对“ t5”列的转换不成功-

“ t5”列是所有字符,我想将其转换为数字列,将非数字值保留为NA,在小标题中命名为“ t5.num”。

我的代码如下:首先,我分配了名称,然后尝试对列进行突变,但是它不起作用-

d <- tibble(id = c(3, 7, 1, 10,100), t5 = c("10", "<1", "NA", "8","78"))
convert_column <- function(data, col_name) {
    new_col_name <- paste0(rlang::enquo(col_name),".num")
    data %>%
        mutate(new_col_name = as.numeric(!!col_name))
     }
d %>% convert_column("t5")

有人可以指出我的代码有什么问题吗?谢谢你的帮助!

罗纳克·沙

得到new_col_name你不需要enquo要分配new_col_name为列名,请使用!!+ :=当您col_name作为字符串传递时,我们需要将其转换为符号(sym),然后求值(!!)。

library(dplyr)
library(rlang)

convert_column <- function(data, col_name) {

   new_col_name <- paste0(col_name,".num")
   data %>% mutate(!!new_col_name := as.numeric(!!sym(col_name)))
}

d %>% convert_column("t5")

# A tibble: 5 x 3
#     id t5    t5.num
#  <dbl> <chr>  <dbl>
#1     3 10        10
#2     7 <1        NA
#3     1 NA        NA
#4    10 8          8
#5   100 78        78

在将“ <1”转换为数字之前将其转换为时返回警告NA

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章