[英]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.