Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/list/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何将列表中的每个文件与R中的另一个数据帧连接起来_R_List_Dataframe_Join_Merge - Fatal编程技术网

如何将列表中的每个文件与R中的另一个数据帧连接起来

如何将列表中的每个文件与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

我已经从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
    ZTS         2020-12    11.8
我需要采取的步骤如下:

  • 将500个列表中除股票代码列以外的每个列表转换(日期为行,“日期”列下的损益表元素为列)
  • 将列表中的每个文件与其他数据框连接起来,以添加“关闭”列
  • 将列表合并到一个数据帧中
  • 我已经为此工作了一段时间,遇到了一些问题:

  • 如果不先将列表中的元素合并到一个数据帧中,我就不知道如何转置它们
  • 我不知道如何将列表中的元素与另一个数据帧连接起来,而不首先合并它们
  • 当我合并所有列表时,我会为每个Ticker获得一个单独的“Ticker_Symbol”列(“Ticker_Symbol.x”代表“AAPL”,“Ticker_Symbol.y”代表“ABBV”,等等)。合并后,我需要所有Ticker_符号都在一个列中。这是我正在运行以合并的代码:

  • 很抱歉问了这么长的问题-对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