2017-11-16 16 views
1

Das Beispiel des Datensatzes, den ich habe, ist unten angegeben. Beachten Sie, dass ich mehr als zwei Spalten im gesamten Datensatz habe.Wie testen, ob die ersten drei Zeichen in einer Zeichenfolge Buchstaben oder Zahlen in r sind?

ID X 
1 MJF34 
2 GA249D 
3 DEW235R 
4 4SDFR3 
5 DAS3 

Ich möchte testen, ob die ersten drei Zeichen in X Buchstaben sind, wenn sie dann möchte ich diesen Wert ersetzen, nur die ersten drei Buchstaben zu zeigen. Wenn die ersten drei Zeichen keine Buchstaben sind, möchte ich diese Werte durch "FR" ersetzen. Daher wäre das Ergebnis wie folgt.

ID X 
1 MJF 
2 FR 
3 DEW 
4 FR 
5 DAS 

Momentan ist X ein Zeichendatentyp.

Vielen Dank im Voraus für jede Hilfe.

Antwort

4

Ich würde versuchen:

x <- substr(dt$X, 1, 3) 
dt$X <- ifelse(grepl('[0-9]', x), 'FR', x) 
dt 
# ID X 
# 1 1 MJF 
# 2 2 FR 
# 3 3 DEW 
# 4 4 FR 
# 5 5 DAS 

Die Daten:

structure(list(ID = 1:5, X = c("MJF34", "GA249D", "DEW235R", 
"4SDFR3", "DAS3")), .Names = c("ID", "X"), class = "data.frame", 
row.names = c(NA, 
-5L)) 
2

können Sie Standard verwenden Basis R

# Your data, dt$X in your case 
x = c("MJF34", "GA249D", "DEW235R", "4SDFR3", "DAS3") 

Erster Einsatz substr Zeichen extrahieren 1 bis 3

Befehle
sub_str = substr(x, 1, 3) 

testen dann für eine Reihe

has_numbers = grep("[0-9]", sub_str) 

Dann

ersetzen
sub_str[has_numbers] = "FR" 
Verwandte Themen