標記について質問させてください。
やりたいことは、横持ちファイルを縦持ちファイルにする方法です。
参考にしているサイトは
https://hato.yokohama/yokotate/#toc5
です。
R
1library('tidyr') 2library('dplyr') 3df = read.table(file = '~/Desktop/analysis/blog/input/yoko.csv', header = TRUE) 4df
id | name | X20170401 | X20170501 | X20170601 |
---|---|---|---|---|
1 | sato | 10 | 20 | 30 |
2 | kondo | 100 | 200 | 300 |
R
1# df : data.frame 2# gather : データフレームをアンピボットする関数 3# key = date : アンピボット対象の列名をセットする列名 4# value = qty : アンピボット対象の値をセットする列名 5# X20170401:X20170601 : アンピボットする列名 6df.gather <- df %>% 7 tidyr::gather( key = date, value = qty, X20170401:X20170601) 8df.gather
id | name | date | qty |
---|---|---|---|
1 | sato | X20170401 | 10 |
2 | ondo | X20170401 | 100 |
1 | atoX | 20170501 | 20 |
2 | ondo | X20170501 | 200 |
1 | atoX | X20170601 | 30 |
2 | kondo | X20170601 | 300 |
これを複数列でやりたいです。
例えば、
|id|name|X20170401|X20170501|X20170601|Y0170401|Y20170501|Y20170601
|:--:|:--:|:--:|:--:|:--:|
1|sato|10|20|30|10|20|30|
2|kondo|100|200|300|100|200|300|
とあった場合、XはXで、YはYだけでまとめたいです。
|id|name|Xdate|Xqty|Ydate|Yqty|
|:--:|:--:|:--:|:--:|
というような感じです。
単純に
R
1df.gather <- df %>% 2 tidyr::gather( key = Xdate, value = Xqty, X20170401:X20170601) 3df.gather 4df.gather <- df.gather %>% 5 tidyr::gather( key = Ydate, value = Yqty, Y20170401:Y20170601)
としたら
Error: cannot allocate vector of size 1.2 Gb
というエラーが起きました
※実際のファイルは、上記のようなものではなく、かなり重いファイルです。
どのように実現できるでしょうか。
ご存知の方がいましたら、ご教示いただけますと嬉しいです。
どうぞよろしくお願い致します。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/03/15 10:18