2017-06-30 2 views
-1

Ich habe einen Datenrahmen mit der Zeichenvariablen ID. Es hat IDs mit 9 Ziffern und 3 anderen Werten: leer, N/A und NA. Ich mag mit 999999999Ersetze verschiedene Werte in der Spalte mit R

blank, N/A und NA ersetzen Ich habe versucht, dies mit:

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

Aber es ersetzt alle Leerzeichen (auch mit gültiger IDs). Was ist der beste Weg, dies zu tun?

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

"alle Zuschnitte (auch mit gültiger IDs)" Sie meinen es nur die leeren ersetzt? Oder es ersetzt jeden Wert mit leer? – TylerH

+4

Bitte machen Sie ein [reproduzierbares Beispiel] (https://stackoverflow.com/a/5963610/6103040). –

+0

Bitte geben Sie ein Beispiel Ihrer Daten mit 'dput' an. Wenn die Daten zu lang sind, können Sie ein Beispiel mit 'dput (head (df $ id, 15))' – G5W

Antwort

1

dieses reproduzierbare Beispiel vor:

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 
Verwandte Themen