使用R替换列中的不同值

时间:2017-06-30 20:36:27

标签: r

我有一个带有字符变量ID的数据框。它具有9位数字和3个其他值:空白,N / A和NA。我想用999999999替换空白,N / A和NA。

我试过用这个:

df$id <- gsub('','999999999', df$id)

但它取代了所有空白(即使是有效的ID)。这样做的最佳方式是什么?

id <- c("", "N/A", "123456789", "NA","123456789")
> dummydata <- data.frame(id)

1 个答案:

答案 0 :(得分:1)

考虑这个可重复的例子:

set.seed(100)
dt <- data.frame(id = sample(rep(c(1:10, c(NA, "N/A", " ", "")), 2)))
replace_value <- 999999999

dt$orig <- dt$id
dt$id                    <- gsub(" ", replace_value, dt$id)
dt$id                    <- gsub("N/A", replace_value, dt$id)
dt$id[is.na(dt$id)]      <- replace_value
dt$id[nchar(dt$id) == 0] <- replace_value  
          id    orig
1          2    2
2          8    8
3  999999999     
4         10   10
5          9    9
6          8    8
7  999999999     
8          5    5
9          4    4
10 999999999  N/A
11         4    4
12         3    3
13         6    6
14 999999999  N/A
15 999999999 <NA>
16 999999999     
17 999999999     
18         9    9
19         7    7
20        10   10
21         2    2
22         3    3
23 999999999 <NA>
24         1    1
25         5    5
26         6    6
27         1    1
28         7    7