2016-05-13 4 views
0

у меня есть DF с колонкой именСоздание группировки переменных на основе имен столбца кадра данных

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 

Мне нужно создать новый столбец, который содержит символ перед . в DF$a, так что

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 

Возможно ли это? Благодарим вас за любые предложения.

+0

Что вы пробовали? Почему это не сработало? – Heroka

+0

не такой элегантный, как решение akrun, но это тоже сработает. 'DF $ c <- sapply (as.character (DF $ a), function (x) unlist (strsplit (x," [.] ")) [1])' –

ответ

1

Мы можем использовать sub для соответствия символу точки (\\.), за которым следует один или несколько символов в конце строки и заменить на ''.

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

Или

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

О, спасибо! это сработало, так просто. Благодарю. – HoHoHo

Смежные вопросы