因為你的敘述不是很清楚
只知道你有10萬個csv, 存在list裡
list中nrow不確定, 只知道是5的倍數
然後把資料直轉橫
解法前面兩位都寫了,
我只想補充, 如果資料結構是很固定的,
請注意你loop的方向
下面的東西雖然醜, 不過loop是18 不是 nrow(N)/5
要好看的話, 用動態變數縮一縮就可以
####
library(dplyr)
data_m <- data.frame(v1=rep("6/1",5), v2=rep("a",5), v3=rep("b",5),
v4=c(12:16), v5=rep(1,5), v6=c(2:6), stringsAsFactors=F)
data_l <- lapply(1:100000, function(v){data_m})
data2 <- data_l %>% rbind_all()
ind <- seq(1,nrow(data2),5)
myV1 <- data2[ind,1]
myV2 <- data2[ind,2]
myV3 <- data2[ind,3]
myV4 <- data2[ind,4]
myV5 <- data2[ind,5]
myV6 <- data2[ind,6]
myV7 <- data2[ind+1,4]
myV8 <- data2[ind+1,5]
myV9 <- data2[ind+1,6]
myV10 <- data2[ind+2,4]
myV11 <- data2[ind+2,5]
myV12 <- data2[ind+2,6]
myV13 <- data2[ind+3,4]
myV14 <- data2[ind+3,5]
myV15 <- data2[ind+3,6]
myV16 <- data2[ind+4,4]
myV17 <- data2[ind+4,5]
myV18 <- data2[ind+4,6]
data_out <- data.frame(myV1, myV2, myV3, myV4,
myV5, myV6, myV7, myV8, myV9, myV10, myV11,
myV12, myV13, myV14, myV15, myV16, myV17, myV18, stringsAsFactors=F)
※ 引述《spiderway (spiderway)》之銘言:
: - 問題: 當你想要問問題時,請使用這個類別
: [問題類型]:
: 效能諮詢(我想讓R 跑更快)
: [軟體熟悉度]:
: 入門(寫過其他程式,只是對語法不熟悉)
: [問題敘述]:
: 大家好,
: 最近因為需要要處理一些資料,雖然有寫出要的東西,但是實在是跑太慢了,感覺要跑個
: 幾年= =,一定是我寫法不好,想來這問一下各位大大該怎個改才對,並學習一下
: 麻煩各位大大給予小魯指導,感激不盡!!!
: 程式:
: 讀取了全部CSV(10萬多個)存在一個大大的list裡面,要做的大概是把每一個list裡面的
: 資料都做同一件事,就是每5筆整理成1筆,然後append在一起,如下
: 1 2 3 4 5 6 1 2 3 ....
: 1 6/1 a b 12 1 2 1 6/1 a b 12 1 2 13 1 3 14 1 4 15 1 5 16 1 6
: 2 6/1 a b 13 1 3
: 3 6/1 a b 14 1 4 變成1筆>>>
: 4 6/1 a b 15 1 5
: 5 6/1 a b 16 1 6
: [程式範例]:
: http://pastie.org/10898589
: [版本]
: R version 3.3.0 (2016-05-03)
: Platform: x86_64-pc-linux-gnu (64-bit)
: Running under: Ubuntu 14.04.4 LTS
: [關鍵字]: