簡體   English   中英

如何將列轉換為數字,同時它包含字符串和數字作為字符串

[英]how to convert a column to numeric while it contains both strings and numbers as strings

我有一個數據框,其中有一列我想用來與另一個數據框連接。 該列包含數字作為字符串和字符串,如下所示:

x<-data.frame(referenceNumber=c("80937828","gdy","12267133","72679267","72479267"))

如何將數字轉換為數字並將字符串替換為零/?

我試過x %>% mutate_if(is.character,as.numeric)

但它返回以下錯誤:

 "Error in UseMethod("tbl_vars") : no applicable method for 'tbl_vars' applied to an object of class "character"" 

我們可以嘗試使用as.numeric ,它會將NA分配給向量中的任何非數字條目。 然后,我們可以有選擇地用零替換NA值:

x <- c("80937828","gdy","12267133","72679267","72479267")
output <- as.numeric(x)
output[is.na(output)] <- 0
output

[1] 80937828        0 12267133 72679267 72479267

根據@Sotos的評論進行編輯:如果列/向量實際上是factor ,則必須將其強制轉換為字符,以便我的答案能夠正常工作。

我會檢查一個ifelse結構中的NA:

x<-data.frame(referenceNumber=c("80937828","gdy","12267133","72679267","72479267"), stringsAsFactors = F)

x$referenceNumber <- ifelse(!is.na(as.numeric(x$referenceNumber)), x$referenceNumber, 0)

僅當您的字符串不是因素時才有效。 否則你需要先添加as.character

可能由於referenceNumber是因素:

x<-data.frame(referenceNumber=c("80937828","gdy","12267133","72679267","72479267"), stringsAsFactors=F)
str(x)
#'data.frame':   5 obs. of  1 variable:
# $ referenceNumber: chr  "80937828" "gdy" "12267133" "72679267" ...
xx<-x %>% mutate_if(is.character,as.numeric)
#Warning message:
#In evalq(as.numeric(referenceNumber), <environment>) :
#  NAs introduced by coercion
xx
#  referenceNumber
#1        80937828
#2              NA
#3        12267133
#4        72679267
#5        72479267
str(xx)
#'data.frame':   5 obs. of  1 variable:
# $ referenceNumber: num  80937828 NA 12267133 72679267 72479267

暫無
暫無

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

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