【发布时间】:2017-09-21 11:39:16
【问题描述】:
我正在尝试将多个 csv 文件合并到一个数据帧中,并尝试使用 for 循环来操作生成的数据帧。生成的数据帧可能有 1,500,000 到 2,000,000 行。
我正在使用下面的代码。
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")))
}
但是代码运行了很长时间。有没有更好更快的方法来做同样的操作?
【问题讨论】:
标签: r for-loop nested-loops