首页 > 解决方案 > 如何将列转换为数字,而它同时包含字符串和数字作为字符串

问题描述

我有一个数据框,其中有一列我想用来与另一个数据框连接。该列包含数字作为字符串和字符串,如下所示:

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""

标签: rdataframenumber-formatting

解决方案


我们可以尝试只使用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,则必须将其转换为字符才能使我上面的答案起作用。


推荐阅读