簡體   English   中英

將字符列轉換為 R 中的數字

[英]convert a character column into numeric in R

我想知道為什么我對“t5”列的轉換沒有成功--

“t5”列是所有字符,我想將其轉換為數字列,將非數字值保留為NA,在tibble中命名為“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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM