首页 > 解决方案 > 用零替换破折号而不影响负数

问题描述

有没有办法用NA或零替换破折号而不影响向量中的负值,类似于以下内容c("-","-121512","123","-")

标签: r

解决方案


做就是了

x <- c("-","-121512","123","-")
x[x == "-"] <- NA
x
#[1] NA        "-121512" "123"     NA

如果您需要一个数字向量而不是字符换x行在as.numeric().


如果要替换数据框中的所有"-"内容,我们可以使用相同的逻辑

df1 <- data.frame(x = c("-","-121512","123","-"),
                  y = c("-","-121512","123","-"),
                  z = c("-","A","B","-"), stringsAsFactors = FALSE)

df1[df1 == "-"] <- NA

如果您想要数字列(如果合适),那么您type.convert

df1[] <- lapply(df1, type.convert, as.is = TRUE)
str(df1)
'data.frame':   4 obs. of  3 variables:
 $ x: int  NA -121512 123 NA
 $ y: int  NA -121512 123 NA
 $ z: chr  NA "A" "B" NA

推荐阅读