我有大量的csv文件,我想讀入R.Csvs中的所有列標題都是相同的。起初我以爲我需要創建一個基於文件名列表的循環,但搜索後我發現了一個更快的方法。這讀入並正確地結合了所有的csvs(據我所知)。將CSV導入到R時如何使用CSV的名稱生成列?
filenames <- list.files(path = ".", pattern = NULL, all.files = FALSE, full.names = FALSE, recursive = FALSE, ignore.case = FALSE)
library(plyr)
import.list <- llply(filenames, read.csv)
combined <- do.call("rbind", import.list)
唯一的問題是,我想知道哪一個csv特定的數據行來自。我想要一個標有'source'的列,其中包含特定行來自的csv的名稱。因此,例如如果CSV被稱爲Chicago_IL.csv時得到的數據爲R的行會是這個樣子:
> City State Market etc Source
> Burbank IL Western etc Chicago_IL
使用rep是可選的,'ret $ Source < - filename'也可以工作 – 2011-03-03 22:19:01
@Karsten W,謝謝。我編輯了代碼以反映您的建議。 – Andrie 2011-03-03 23:30:43
這可能是一個有點愚蠢的問題,但...當使用您的更改(ldply())時,數據將被重新格式化,所有列標題將轉換爲行標題,文件名(包含數字)將成爲列標題。有沒有解決的辦法?使用llply有沒有缺點? – Arndt 2011-03-04 14:56:36