2016-12-13 16 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 

データフレームのこの種は、1は、Apache豚を使用してになるだろうが出力されます。ここでは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

すてきなトリックに感謝@アブドゥが、私は手動の解決策が欲しくない。残念ながら私のデータフレームの列が多すぎます –

+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

申し訳ありませんが、ちょっとした解決策を求めました。 – Lee88

+0

あなたが 'tidyverse'ソリューションを追加した場合。 'purr'もお持ちください。そのnice –

+3

これは@joranのコメントと同じではありませんが、関数を入れ子にするのではなく '%>%'を使用していますか?ここから「こんにちは」とは何ですか? –

関連する問題