我想多個CSV文件合併成一個單一的數據幀,並試圖操縱使用for循環生成的數據幀。結果數據幀的行數可能在1,500,000到2,000,000之間。優化對於嵌套的循環,如果R中
我使用了相同下面的代碼。
setwd("D:/Projects")
library(dplyr)
library(readr)
merge_data = function(path)
{
files = dir(path, pattern = '\\.csv', full.names = TRUE)
tables = lapply(files, read_csv)
do.call(rbind, tables)
}
Data = merge_data("D:/Projects")
Data1 = cbind(Data[,c(8,9,17)],Category = "",stringsAsFactors=FALSE)
head(Data1)
for (i in 1:nrow(Data1))
{
Data1$Category[i] = ""
Data1$Category[i] = ifelse(Data1$Days[i] <= 30, "<30",
ifelse(Data1$Days[i] <= 60, "31-60",
ifelse(Data1$Days[i] <= 90, "61-90",">90")))
}
但是代碼運行時間很長。有更好更快的方式來做同樣的操作嗎?
非常感謝!代碼工作正常,運行時間少於幾秒鐘:) –