2016-03-01 2 views
1

Моей выборки данныеSubset конкретных столбцов

DF 
x.c y.ce z.ac 

Это все числовые столбцы

Я пытаюсь извлечь столбец c в одиночку. Если я использую grep или grepl, он принимает все столбцы, так как все они содержат c.

Не могли бы вы помочь мне решить проблему. Спасибо.

+0

Почему не просто 'DF [, c (" c "," tg ")]'? – rbm

+0

Поскольку cols в моем DF имеют более сложные имена, например. abc.c и cde.ce, и я пытаюсь выбрать только те, у которых есть c в конце имени. – Try

+0

Вы можете использовать 'grepl (" \\ b (c | tg) \\ b ", имена (DF))' – akrun

ответ

1

В соответствии с моим комментарием выше, если вы хотите получить имена, которые конца с c вы хотите, чтобы получить их через

names(DF)[grepl("c$", names(DF))] 

, а затем получить значение через

DF[, names(DF)[grepl("c$", names(DF))]] 

(или только значение TRUE/FALSE индекс:

DF[, grepl("c$", names(DF))] 

)

Update:

OP изменил первоначальный вопрос, так что ответ теперь просто

DF[, "c"] 

извлечь c колонку

> DF <- data.frame(c=c(1,2,3), ce=c(2,3,4), ac=c(3,4,5)) 
> DF 
    c ce ac 
1 1 2 3 
2 2 3 4 
3 3 4 5 
> DF[,"c"] 
[1] 1 2 3 

Update 2: OP снова изменил исходный вопрос, так что ответ теперь следующий:

DF <- data.frame(x.c=c(1,2,3), y.ce=c(2,3,4), z.ac=c(3,4,5)) 
> DF 
    x.c y.ce z.ac 
1 1 2 3 
2 2 3 4 
3 3 4 5 
> DF[, names(DF)[grepl("\\.c$", names(DF))]] 
[1] 1 2 3 
+0

Ваш код работает, но он учитывает другие столбцы, содержащие 'c' в именах столбцов. Например, для столбцов используются' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '', потому что последний также имеет c в именах. Но я хочу вместо этого только c – Try

+0

Вы сказали 'c' в конце, вот что 'c $' означает. Вам нужны только столбцы с именем 'c'? – rbm

+0

У вас не может быть два столбца в data.frame с тем же именем, не так ли? В этом случае нет необходимости в регулярном выражении, но просто« имена »(DF) == «c» 'я бы подумал – rbm

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