2017-04-06 3 views
0

csvファイルからデータフレームをインポートしました。データフレームはかなり醜いです。すべての変数の名前を最初の観測の値に変更し、この最初の観測を削除したいと思います。私の同僚は私にこのコードでアイデアを与えました。dplyrを使用してdf内のすべての変数の名前を変更し、最初の観察を削除します

colnames(df) <- lapply(df[1, ], as.character) 
df <- df[-1,] 

上記のコードは完璧に動作しますが、私はdplyr :-)を愛するそれを用いたパイプを行い、dplyrする方法はありますか?

PS:私は何かばかげて言っても申し訳ありません。私はRの初心者です。これはStack Overflowの最初の質問です。

+2

この作業にdplyr-pipesを使用するよりも、あなたの同僚が提案した方が簡単です。しかし、なぜあなたはファイルを正しく読み込まないのですか? (すなわち、 'skip = 1'を使用して) –

+0

とても良いアイデア!私はちょうどそれを適用し、それは働いた...しかし、部分的にのみ。今私は最初の観測を削除する必要はありませんが、スキップされた観測の名前ですべての変数の名前を変更する必要があります。何か案が? – ungatoverde

+0

このファイルを読むためには何を使用しますか? 'read.csv'ですか? 'read.table'ですか? 'read.table'を使うと' header = TRUE'を追加するだけです。 – Scarabee

答えて

1
set.seed(1984) 

require(dplyr) 

## simulating a data frame 

df <- data.frame(a = 1:10, 
       b = sample(LETTERS,10, replace = T), 
       c = sample(letters,10, replace = T), 
       stringsAsFactors = F) 




    head(df) 


    a b c 
    # 1 1 P y 
    # 2 2 A j 
    # 3 3 P o 
    # 4 4 W u 
    # 5 5 U a 
    # 6 6 E k 

df %>% 
    filter(row.names(.) == 1) %>% 
    as.character(.) -> names(df) 

df 



    #  1 P y 
    # 1 1 P y 
    # 2 2 A j 
    # 3 3 P o 
    # 4 4 W u 
    # 5 5 U a 
    # 6 6 E k 
    # 7 7 W o 
    # 8 8 P h 
    # 9 9 N b 
    # 10 10 O f 
+0

ありがとう!データフレームの列に行番号を追加しなくても、同じことをすることはできますか? – ungatoverde

+1

投稿されたコードはそれをしません、それらはrow.names列ではありません。答えに満足すれば、チェックマークをクリックしてください。 –

+0

申し訳ありません!あなたが正しいです。 row.names()を使用して良い点。しかし、実際にはこのコードは期待通りに機能しませんでした。最初の行は削除されず、新しい変数名は最初の行の値と一致しません。 – ungatoverde

関連する問題