2016-12-30 4 views
0

Hier ersetzen ist meine Daten Frame „Verbrechen“:Finden und mehrere Zeichen innerhalb einer Spalte in R

District Premise Weapon 
313  99  99 
316  NA 
314  20  99 
312  13  40 
312  9  99 

Ich habe eine separate Liste von dem, was alle Codes bedeuten. Zum Beispiel bedeutet 99 in Prämisse "Wohnsitz", 20 bedeutet "Straße". 99 in Waffe bedeutet "Hände", 40 bedeutet "stumpfes Objekt".

In einem anderen Beitrag auf stackflow konnte ich den folgenden Code für meine Zwecke verwenden:

crime$Premise[crime$Premise == 13] <- "House" 

Das funktionierte aber ich merkte, ich 30 verschiedene Codes in Premise und Waffen haben. Es muss einen effizienteren Weg geben, den Code zu schreiben, anstatt den obigen Code mehrmals zu kopieren und einzufügen und die Ganzzahl durch die Zeichenkette zu ersetzen.

* Anmerkung, 99 bedeutet etwas anderes unter Premise und etwas anderes in Weapon.

Was ist der beste Weg, dies zu schreiben, damit ich alle Nummern mit entsprechenden Codes ersetzen kann? Vielen Dank im Voraus!

+4

Verwenden Sie '? Factor's oder einen Lookup-Vektor. –

+2

Es könnte hilfreich sein, wenn Sie ein vollständigeres Beispiel geben (wie die Code-Übersetzungen für alle Codes in Ihrem aktuellen Beispiel, zusammen mit der erwarteten Ausgabe), vielleicht auch erklären, warum Sie sowohl Leerzeichen als auch NAs haben ... – Frank

+0

Eine andere Alternative wäre eine Hash-Tabelle aus dem Paket-Hash zu verwenden, – G5W

Antwort

0

, wenn Sie einen Indexvektor nicht bauen wollen, können Sie recode verwenden:

x<-data.frame(district=c(313,316,314),premise=c(99,NA,20),Weapon=c(99,"",99)) 

     district premise Weapon 
    1  313  99  99 
    2  316  NA  
    3  314  20  99 

x $ Prämisse < -recode (x $ Prämisse, "99" = "residance", "20" = "Straße")

district premise Weapon 
1  313 residance  99 
2  316  <NA>  
3  314 Street  99 
Verwandte Themen