複数のcsvファイルを1つのデータフレームにマージし、forループを使用して結果のデータフレームを操作しようとしています。得られたデータフレームは、1,500,000〜2,000,000行の間の任意の場所にある可能性があります。Forループをネストされた状態で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")))
}
ただし、コードは非常に長く実行されています。同じ操作を行うより速く、より速い方法がありますか?
おかげで多くのことを実行します!コードはちょうどうまく動作し、数秒未満で走った:) –