r - 在R中的多个文件上应用相同的功能

标签 r apply

我是 R 程序的新手,目前正在处理一组财务数据。现在我的工作目录下有大约 10 个 csv 文件,我想分析其中一个并将相同的命令应用于其余的 csv 文件。

以下是这些文件的所有名称: ("US%10y.csv", "UK%10y.csv", "GER%10y.csv","JAP%10y.csv", "CHI%10y.csv", “SWI%10y.csv”、“SOA%10y.csv”、“BRA%10y.csv”、“CAN%10y.csv”、“AUS%10y.csv”)

例如,因为 CSV 文件中的日期列是因子,所以我需要将它们更改为日期格式:

CAN <- read.csv("CAN%10y.csv", header = T, sep = ",")
CAN$Date <- as.character(CAN$Date)
CAN$Date <- as.Date(CAN$Date, format ="%m/%d/%y")
CAN_merge <- merge(all.dates.frame, CAN, all = T)
CAN_merge$Bid.Yield.To.Maturity <- NULL

all.dates.frame 是一个连续 731 天的数据框。我想合并它们,以便每个文件具有相同的行数,这使我能够将 10 个文件组合在一起以获得 731 X 11 的主数据框。

当然,我可以复制并粘贴此代码并更改文件名,但是有没有简单的方法可以使用 apply 或 for 循环来做到这一点???

非常感谢您的帮助。

最佳答案

这应该可以解决问题。如果某个部分不起作用,请发表评论。没有测试就写了这个盲注。

获取当前目录中以 .csv 结尾的文件列表

L = list.files(".", ".csv")

遍历每个名​​称并读入每个文件,执行您要执行的操作,返回数据帧DF_Merge并将它们存储在列表中。
O = lapply(L, function(x) {
           DF <- read.csv(x, header = T, sep = ",")
           DF$Date <- as.character(CAN$Date)
           DF$Date <- as.Date(CAN$Date, format ="%m/%d/%y")
           DF_Merge <- merge(all.dates.frame, CAN, all = T)
           DF_Merge$Bid.Yield.To.Maturity <- NULL
           return(DF_Merge)})

绑定(bind)所有DF_Merge data.frames 合并为一个大 data.frame
do.call(rbind, O)

我猜你需要某种指标,所以这可能很有用。根据文件名的前 3 个字符创建指示符列 rep(substring(L, 1, 3), each = 731)

关于r - 在R中的多个文件上应用相同的功能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30790114/

相关文章:

r - 错误 : ggplot2 doesn't know how to deal with data of class uneval

regex - 根据特殊字符分割字符串

r - 使用 dplyr 进行线性插值

r - 不使用循环向 xml 对象添加多个子对象

r - 将嵌套 For 循环与滚动函数转换为应用

list - elisp 如何将 lambda 应用于列表?

r - 提高 R 中删除每行重复值和移位值的效率

r - 流命令失败!在 RHADOOP

R Shiny : async downloadHandler

r - 如何访问列表索引