我有一个像这样的数据框 df
Col1 Col2 Col3
1 2 5
6 X1 9
8 X3 7
5 3 X4
我想用 NA 替换所有以“X”开头的值。结果应该是
Col1 Col2 Col3
1 2 5
6 NA 9
8 NA 7
5 3 NA
我尝试了不同的解决方案但没有成功:
df[-grep(pattern = "X^",df),]
df %>% mutate_all(~na_if(.,"X*"))
df%>% mutate_all(~na_if(.,matches("X*")))
df %>% mutate_all(~na_if(.,glob2rx("X*")))
lapply()
应该可以解决问题:
df[] <- lapply(df[], \(x){x[grep("X", x)] <- NA; as.numeric(x)})
# Col1 Col2 Col3
#1 1 2 5
#2 6 NA 9
#3 8 NA 7
#4 5 3 4
数据
df <- read.table(text = "Col1 Col2 Col3
1 2 5
6 X1 9
8 X3 7
5 3 4", header = TRUE)