2016-06-01 6 views
1

Ich möchte einige Zeilen aus meinen Daten in R basierend auf bestimmten Bezeichner in Spalte ids extrahieren. Meine Daten sind wie folgt aus:Auswählen/Extrahieren von Zeilen Basis von Rowname in R

ids   A1  B1  C1 D1 E1 ... 
asd.wd.01 12  23  27 32 76 
qsd.yh.02 54  32  32 11 22 
gsd.kj.01 22  21  67 88 22 
hnd.gd.02 22  88  42 41 93 
sjd.td.01 52  31  72 19 31 

Und ich möchte folgende Ausgabe: (Zeile mit 01 zB xxx.xx.01.)

ids   A1  B1  C1 D1 E1 ... 
asd.wd.01 12  23  27 32 76 
gsd.kj.01 22  21  67 88 22 
sjd.td.01 52  31  72 19 31 
+4

vielleicht 'df [grepl (" 01 ", df $ ids),]'? – mtoto

+1

können Sie 'grep' auch verwenden, und versuchen Sie mit' "01 $" 'zu spezifizieren, dass das Muster am Ende der Schnur sein muss – Cath

Antwort

1

Sie String-Matching verwenden können. Zum Beispiel

Index <- grep("\\.01$", df$ids) ## Gives index of rows which contains .01 
df <- df[Index, ] ## subsets dataframe 
+0

Yeah ich bearbeite die Antwort dank – Koundy

+0

@mona, wenn Ihre' IDs 'sind eigentlich rownames, juste ersetzen 'df $ ids' durch 'row.names (df)' in der Antwort. – Cath

0

können Sie Zeilen extrahieren, indem Sie Grepl

df <- subset(df, grepl("\\.01$", df$ids) 
+0

Vielen Dank, leider habe ich vergessen zu erwähnen, dass meine erste Spalte ohne Überschrift ist (keine "IDs") A1 B1 C1 D1 E1 ... asd.wd.01 12 23 27 32 76 qsd.yh.02 54 32 32 11 22 gsd.kj.01 22 21 67 88 22 hnd.gd.02 22 88 42 41 93 sjd.td.01 52 31 72 19 31 – mona

-1

Verwendung %>% (Rohr Operator) und filter() von dplyr Paket und %like% von data.table Paket. Extrahierte Zeilen, in denen Name mit .1 endet. Sie können Ihre Daten verwenden und die ähnliche Ersetzung durchführen.

> library(dplyr) 
> library(data.table) 
> df <- data.frame(Name=c("A.1","B.1","A.3","B.2","C.1"),A=1:5,B=5:9,C=10:14) 
> df 
    Name A B C 
1 A.1 1 5 10 
2 B.1 2 6 11 
3 A.3 3 7 12 
4 B.2 4 8 13 
5 C.1 5 9 14 

> df %>% filter(Name %like% ".1") 
    Name A B C 
1 A.1 1 5 10 
2 B.1 2 6 11 
3 C.1 5 9 14 
Verwandte Themen