2016-05-13 9 views
0

ich eine DF mit Spalte von Namen habenErstellen variable Gruppierungsspalte basierend auf Namen von Datenrahmen

DF 
a  b 
a.b 1 
a.c 2 
a.d 3 
b.c 4 
b.l 5 
b.d 6 
c.a 6 
c.b 7 

Ich muss neue Spalte erstellen, die in DF$a vor . Symbol enthält, so dass

DF 
    a  b c 
    a.b 1 a 
    a.c 2 a 
    a.d 3 a 
    b.c 4 b 
    b.l 5 b 
    b.d 6 b 
    c.a 6 c 
    c.b 7 c 

Ist es möglich? Vielen Dank für Anregungen.

+0

Was haben Sie versucht? Warum hat es nicht funktioniert? – Heroka

+0

nicht so elegant wie die Lösung von akrun, aber das wird auch funktionieren. 'DF $ c <- sapply (as.zeichen (DF $ a), funktion (x) unlist (strsplit (x," [.] ")) [1])' –

Antwort

1

Wir können sub verwenden, um das Punktzeichen (\\.) gefolgt von einem oder mehreren Zeichen am Ende der Zeichenfolge und ersetzen durch ''.

DF$c <- sub("\\..*$", "", DF$a) 
DF$c 
#[1] "a" "a" "a" "b" "b" "b" "c" "c" 

Oder

library(stringr) 
str_extract(DF$a, "\\w+") 
+1

Oh danke! es hat funktioniert, so einfach. Vielen Dank. – HoHoHo

Verwandte Themen