Frage

Ich möchte zum Beispiel Zeilen basierend auf den Untergruppen ihrer Namen auswählen

Wenn ich die folgenden Daten habe:

data <- structure(c(91, 92, 108, 104, 87, 91, 91, 97, 81, 98), 
.Names = c("fee-", "fi", "fo-", "fum-", "foo-", "foo1234-", "123foo-", 
"fum-", "fum-", "fum-"))

Wie wähle ich die Zeilen aus, die 'Foo' übereinstimmen?

Mit Grep () funktioniert nicht:

 grep('foo', data)

kehrt zurück:

integer(0)

Was mache ich falsch? Oder gibt es einen besseren Weg?

Vielen Dank!

War es hilfreich?

Lösung

Sie müssen die Namenseigenschaft von Daten von Daten und nicht die Eigenschaft der Werte grep.

Verwenden Sie für Ihr Beispiel

> grep("foo",names(data))
[1] 5 6 7
> data[grep("foo",names(data))]
  foo- foo1234-  123foo- 
  87       91       91 

Ein weiterer sauberer Weg, dies zu tun, besteht darin, Datenrahmen zu verwenden.

> data <- data.frame(values=c(91, 92, 108, 104, 87, 91, 91, 97, 81, 98), 
                   names = c("fee-", "fi", "fo-", "fum-", "foo-", "foo1234-", "123foo-", 
                   "fum-", "fum-", "fum-"))

> data$values[grep("foo",data$names)]
[1] 87 91 91

Andere Tipps

Verwenden Sie die Teilmenge in Kombination mit regulären Ausdrücken:

subset(your_data, regexpr("foo", your_data$your_column_to_match) > 0))

Wenn Sie sich nur um einen Datensatz mit einer Spalte kümmern, müssen Sie keinen Spaltennamen angeben ...

Philip

> grep("foo",names(data), value=T)
[1] "foo-"     "foo1234-" "123foo-" 

Wenn der Wert wahr ist, gibt er den Inhalt anstelle des Index zurück

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top