合并大量csv数据集

时间:2014-12-03 04:55:14

标签: r csv merge dataframe dplyr

以下是2个样本数据集。

PRISM-APPT_1895.csv https://copy.com/SOO2KbCHBX4MRQbn

PRISM-APPT_1896.csv https://copy.com/JDytBqLgDvk6JzUe

我有100种这样的数据集,我正在尝试合并到一个数据框中,将其导出到csv,然后将其合并到另一个非常大的数据集中。

我需要通过“gridNumber”和“Year”合并所有内容,创建一个时间序列数据集。

最初,我导入了所有年度数据集,然后尝试将它们与此合并:

df <- join_all(list(Year_1895,    Year_1896,    Year_1897,    Year_1898,    Year_1899,    Year_1900,    Year_1901,    Year_1902,   
                    Year_1903,    Year_1904,    Year_1905,    Year_1906,   Year_1907,    Year_1908,    Year_1909,    Year_1910,   
                    Year_1911,    Year_1912,    Year_1913,    Year_1914,   Year_1915,    Year_1916,    Year_1917,    Year_1918,   
                    Year_1919,    Year_1920,    Year_1921,    Year_1922,   Year_1923,    Year_1924,    Year_1925,    Year_1926,   
                    Year_1927,    Year_1928,    Year_1929,    Year_1930,   Year_1931,    Year_1932,    Year_1933,    Year_1934,   
                    Year_1935,    Year_1936,    Year_1937,    Year_1938,   Year_1939,    Year_1940,    Year_1941,    Year_1942,   
                    Year_1943,    Year_1944,    Year_1945,    Year_1946,   Year_1947,    Year_1948,    Year_1949,    Year_1950,   
                    Year_1951,    Year_1952,    Year_1953,    Year_1954,   Year_1955,    Year_1956,    Year_1957,    Year_1958,   
                    Year_1959,    Year_1960,    Year_1961,    Year_1962,   Year_1963,    Year_1964,    Year_1965,    Year_1966,   
                    Year_1967,    Year_1968,    Year_1969,    Year_1970,   Year_1971,    Year_1972,    Year_1973,    Year_1974,   
                    Year_1975,    Year_1976,    Year_1977,    Year_1978,   Year_1979,    Year_1980,    Year_1981,    Year_1982,   
                    Year_1983,    Year_1984,    Year_1985,    Year_1986,   Year_1987,    Year_1988,    Year_1989,    Year_1990,   
                    Year_1991,    Year_1992,    Year_1993,    Year_1994,   Year_1995,    Year_1996,    Year_1997,    Year_1998,   
                    Year_1999,    Year_2000), 
                    by = c("gridNumber","Year"),type="full")

但是R继续崩溃,因为我认为合并对于它来说有点大,所以我正在寻找能够更好地工作的东西。也许data.table?或另一种选择。

感谢您提供的任何帮助。

1 个答案:

答案 0 :(得分:1)

差不多九个月后,你的问题没有答案。我找不到你的数据集,但是,我会展示一种方法来完成这项工作。这在awk中是微不足道的。

这是一个最小的awk脚本:

BEGIN {
    for(i=0;i<10;i++) {
        filename = "out" i ".csv";
        while(getline < filename) print $0;
        close(filename);
    }
}

脚本运行为 awk -f s.awk 其中s.awk是文本文件中的上述脚本。

此脚本创建十个文件名:out0.csv,out1.csv ... out9.csv。这些是已存在的数据文件。打开第一个文件,将所有记录发送到标准输出。然后关闭该文件并创建并打开下一个文件名。上面的脚本几乎没有提供命令行读取/重定向。您通常会使用awk处理从另一个文件读取的长文件名列表; with语句根据不同的标准选择性地忽略行或列。