2017-06-30 58 views
-1

我有一個帶有字符變量ID的數據框。它具有9位數字和3個其他值的ID:空白,N/A和NA。我想更換空白,N/A和NA與999999999使用R替換列中的不同值

我嘗試使用這樣的:

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

但替換所有空白(即使有效身份證件)。做這個的最好方式是什麼?

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

「全部爲空白(即使有效身份證件)」 你的意思是隻替換空白?或者它用空白替換每個值? – TylerH

+4

請做一個[可重現的例子](https://stackoverflow.com/a/5963610/6103040)。 –

+0

請使用'dput'提供您的數據樣本。如果數據太長,可以用'dput(head(df $ id,15))' – G5W

回答

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