2016-07-26 20 views
2

Ich frage mich, wie man eine Teilmenge eines Datenframes basierend auf der Frage, ob eine Spalte ein oder mehr als ein Zeichen hat.R: Wie Subset-Daten mit der Bedingung, nur Zeilen mit einem Zeichen in einer Spalte herauszunehmen

dt = data.frame(id = c(1,2,3),character = c("a", "a a", "b"), stringsAsFactors = F) 
#   id     character 
#1   1     a 
#2   2     a a 
#3   3     b 

, was ich will bekommen, ist die nur die Zeilen mit nur einem Zeichen in der Zeichenspalte, nämlich:

#   id     character 
    #1   1     a 
    #3   3     b 

Antwort

0

Ihre Frage eine Variation von this Lösung.

subsetDF <- dt[nchar(dt$character)==1, ] 
:

Abgestimmt auf Ihre Frage, Datenrahmen subsetting kann in folgenden Fällen nicht verwendet werden

1

Wir können nchar verwenden, um die Anzahl der Zeichen zu finden, ob es gleich 1 (==1) und verwenden Sie die subset Zeilen des Datensatzes.

subset(dt, nchar(as.character(character))==1) 
# id character 
#1 1   a 
#3 3   b 

Oder wir verwenden grep

dt[grep("^\\S$", dt$character),]