2016-07-21 9 views
0

内のデータの壊れたチャンクのための新しい列を作成:データフレームを壊し、私はこのようなデータフレームを持つR

Values 
1 
2 
3 
. 
. 
1000 

私は列に基づいて10列を持つデータフレームの中にそれを破るしたいと思います。行1-100が1列に進むように、行101から200は、第2列にので、以下のように設定された最終データが得られる上に行く:

dfNew <- data.frame(matrix(unlist(df), 100)) 
names(dfNew) <- paste0("Col", 1:10) 

:ここ

Col1 Col2............... Col10 
1 101     901 
2 102     902 
3 103     903 
.  . 
.  . 
100 200     1000 

答えて

2

する一つの方法であります最初の行は、data.frameをベクトル(unlist)に、次に行100の長さ(matrix)の行列に強制します。この行列は、data.frame(data.frame)に変換されます。二行目はdata.frame名を追加します

head(dfNew) 
    Col1 Col2 Col3 Col4 Col5 Col6 Col7 Col8 Col9 Col10 
1 1 101 201 301 401 501 601 701 801 901 
2 2 102 202 302 402 502 602 702 802 902 
3 3 103 203 303 403 503 603 703 803 903 
4 4 104 204 304 404 504 604 704 804 904 
5 5 105 205 305 405 505 605 705 805 905 
6 6 106 206 306 406 506 606 706 806 906 

:ここ

は、最初の6行です。

データ

df <- data.frame(Values=1:1000) 
+0

を使用することができ、列名を設定するpaste0を使用するように、私はいつもあなたの答えを渡って来ます!私は本当に申し訳ありません。私は本当に気にするつもりはありません:-p私はあなたが偉大で単純な答えが好きでした。 – Learner

+1

@Learner問題を解決するために別の方法を考え出すなら、それは素晴らしいことです。ある状況でうまくいくものもあれば、別の状況でうまくいくものもあるので、複数の方法を表示すると便利です。 – lmo

1

代替は実行do.callを使用してlapply引数でconsturctedリストの順序を取り、組み合わせrbindからの関数呼び出しを構築しています列単位で

df <- data.frame(Values=1:1000) 
mydf <- data.frame(do.call(rbind,lapply(df,matrix, ncol=10))) 
names(mydf) <- paste0("Col", 1:10) 

あなたはそれが面白いですはsprintf

names(mydf) <-sprintf("Col%d", 1:10) 

> head(mydf,5) 
# Col1 Col2 Col3 Col4 Col5 Col6 Col7 Col8 Col9 Col10 
#1 1 101 201 301 401 501 601 701 801 901 
#2 2 102 202 302 402 502 602 702 802 902 
#3 3 103 203 303 403 503 603 703 803 903 
#4 4 104 204 304 404 504 604 704 804 904 
#5 5 105 205 305 405 505 605 705 805 905 
関連する問題