如何将列表中的每个文件与R中的另一个数据帧连接起来
我已经从CSV创建了一个包含500个文件的列表,并使用以下代码添加了一列文件名:如何将列表中的每个文件与R中的另一个数据帧连接起来,r,list,dataframe,join,merge,R,List,Dataframe,Join,Merge,我已经从CSV创建了一个包含500个文件的列表,并使用以下代码添加了一列文件名: filenames <- list.files(pattern="*.csv") file_list <- lapply(filenames, function(x) cbind(Ticker_Symbol=strsplit(x,'\\.')[[1]][1], read.csv(x))) 要与之连接的数据帧片段: Ticker_Symbol Date Close
filenames <- list.files(pattern="*.csv")
file_list <- lapply(filenames, function(x) cbind(Ticker_Symbol=strsplit(x,'\\.')[[1]][1], read.csv(x)))
要与之连接的数据帧片段:
Ticker_Symbol Date Close
ZTS 2020-12 11.8
我需要采取的步骤如下:
很抱歉问了这么长的问题-对R来说是个新问题,我已经尝试解决这个问题将近一个星期了,但都没有成功。任何帮助都将不胜感激 关于加入表的问题,我认为
merge()
可以满足您的需要。它要么将公共列名上的两个表x
和y
合并,要么将参数by
、by.x
或by.y
明确指定的列合并。查看?合并
,了解完整说明。还可以指定附加到不用于合并的常用列名的后缀
包含净收入
数据的表似乎是另一个问题,因为它似乎是宽格式和长格式的混合,同时混淆了列名和数据字段。我认为在R中修复这样的数据结构会有点难看。如果可能的话,在R之外使用类似于awk
的东西可能会更容易解决这个问题
如果您需要在
R
中执行此操作,我会尝试以列表的形式读取数据,并尝试将其重新组织为适合data.frame的数据结构,因为这是大多数数据分析函数所期望的接口。也许您不需要联接,但需要cbind
。尝试:merged\u表
Ticker_Symbol Date Close
ZTS 2020-12 11.8
merged_table <- Reduce(function(x, y) full_join(x, y, by="Date"), file_list)
Ticker_Symbol Date Net_Income Close
ZTS 2020-12 1.20B 11.8
ZTS 2020-09 1.1B 11.6
ZTS 2020-06 1.097B 11.5
AME 2020-12 600M 10.8
AME 2020-09 689.4M 10.9
AME 2020-06 702.8M 11.2