2017-12-01 2 views
0

Wie entferne ich die Zeilen, die nur Zahlen enthalten? ich habe:Behalten Sie alphanumerisch, aber entfernen Sie Zeilen mit nur Zahlen in R

col A  colB  colc 
1947  2   3 
1947  USA1  USA 
1947  Canada  Canada 
1947  NA   Mexico 

, was ich will, ist:

col A  colB  colc 

1947  USA1  USA 
1947  Canada  Canada 
1947  NA   Mexico 

Bitte beachten Sie die Numerik in anderen Reihen vorhanden sind, aber ich möchte die Zeilen, die nur Numerik müssen entfernt werden (basierend auf colB und colc) Ich versuchte Grep in c ("USA1", "Kanada", "Mexiko"), aber das entfernt NA-Werte, die ich behalten möchte.

Antwort

1

Wir können die Spalten Schleife über, verwenden grepl die numerischen Elemente zu finden, Reduce es dann zu einem logischen vector die Zeilen der Teilmenge

df1[!Reduce(`|`, lapply(df1[-1], grepl, pattern = '^[0-9]+$')),] 
# colA colB colc 
#2 1947 USA1 USA 
#3 1947 Canada Canada 
#4 1947 <NA> Mexico 

Eine weitere Möglichkeit ist numeric zu konvertieren und dann prüfen, mit is.na, weil alle nicht-numerischen Elemente werden NA mit einer Warnmeldung

df1[Reduce(`&`, lapply(df1[-1], function(x) is.na(as.numeric(x)))),] 
umgewandelt werden
Verwandte Themen