2014-12-03 97 views
0

以下是2个示例数据集。合并大量csv数据集

棱镜APPT_1895.csv https://copy.com/SOO2KbCHBX4MRQbn

棱镜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") 

可是者继续崩溃,因为我认为合并是有点大,它来处理,所以我正在寻找更好的工作。也许data.table?或者另一种选择。

感谢您提供的任何帮助。

+0

您似乎在链接中具有相同的文件。 – jazzurro 2014-12-03 04:59:59

+0

@jazzurro对不起。我已更正链接 – Vedda 2014-12-03 05:02:41

+2

很难说出会发生什么。但是,值得在'data.table'中使用'fread'来上传你的csv文件。然后,你可以尝试像'rbindlist(mget(ls(pattern =“Year _”)))''。 – jazzurro 2014-12-03 05:20:02

回答

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处理从另一个文件读取的长文件名列表;并根据各种标准选择性地忽略行或列。