2016-12-13 5 views
-5

рассмотреть этот простой пример:dplyr: как изменить имена столбцов на основе шаблона?

data <- data_frame('data::col1' = c(1,2,3), 'data::col2' = c(1,2,3)) 
> data 
# A tibble: 3 × 2 
    `data::col1` `data::col2` 
     <dbl>  <dbl> 
1   1   1 
2   2   2 
3   3   3 

Этот вид dataframe является выход один бы получить с помощью Apache Pig. Здесь я могу загрузить его с помощью dplyr, но, как вы можете видеть, имена столбцов громоздки.

Как я могу использовать комплект tidyverse, чтобы избавиться от части до ::? Кроме того, предположим, что у меня много столбцов с шаблоном data::mycol, поэтому идеальное решение не требует ввода вручную каждого затронутого столбца.

выход ожидается:

# A tibble: 3 × 2 
    col1 col2 
    <dbl> <dbl> 
1  1  1 
2  2  2 
3  3  3 

Спасибо!

+1

'' 'my_data%>% rename (col1 =' data :: col1', col2 = 'data :: col2')' ''? – Abdou

+0

славный трюк спасибо @Abdou, но я не хочу ручного решения. К сожалению, слишком много столбцов в моем фреймворке данных –

+13

Не нужно изобретать колесо, здесь: 'colnames (data) <- gsub ("^data :: "," ", colnames (data))'. – joran

ответ

0
library(dplyr) 
library(purrr) 

data <- data.frame('data::col1' = c(1,2,3), 'data::col2' = c(1,2,3)) 
names(data) <- names(data) %>% 
    gsub("data..", "", .) 
+1

Извините, просто увидел ваш запрос на решение tidyverse. – Lee88

+0

, если вы добавите решение 'tidyverse'. пожалуйста, держите также «мурлыканье». его хороший –

+3

Разве это не так, как @joran в комментариях, но он использует '%>%' вместо вложенности функций? Что здесь от 'purrr'? –