相关疑难解决方法(0)

如何一次导入多个.csv文件?

假设我们有一个包含多个data.csv文件的文件夹,每个文件包含相同数量的变量,但每个变量包含不同的时间.R中有没有办法同时导入它们而不必单独导入它们?

我的问题是我有大约2000个数据文件要导入,只需使用代码就可以单独导入它们:

read.delim(file="filename", header=TRUE, sep="\t")
Run Code Online (Sandbox Code Playgroud)

不是很有效率.

csv import r r-faq

195
推荐指数
9
解决办法
29万
查看次数

将CSV导入R时如何生成包含CSV名称的列?

我有大量的csv文件,我想读入R.所有csvs中的列标题是相同的.起初我以为我需要根据文件名列表创建一个循环,但在搜索之后我发现了一种更快的方法.这将正确读入并组合所有csvs(据我所知).

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)
Run Code Online (Sandbox Code Playgroud)

唯一的问题是我想知道特定行数据来自哪个csv.我想要一个标有"source"的列,其中包含特定行来自的csv的名称.所以例如,如果csv被称为Chicago_IL.csv,当数据进入R时,行看起来像这样:

> City    State   Market  etc Source  
> Burbank IL      Western etc Chicago_IL
Run Code Online (Sandbox Code Playgroud)

r

20
推荐指数
3
解决办法
1万
查看次数

在读取和绑定多个文件时,将"filename"列添加到表中

我在多个目录中有许多csv文件,我想读入R tribble或data.table.我使用"list.files()"并将递归参数设置为TRUE来创建文件名和路径列表,然后使用"lapply()"读入多个csv文件,然后"bind_rows()"将它们全部粘在一起一起:

filenames <- list.files(path, full.names = TRUE, pattern = fileptrn, recursive = TRUE)
tbl <- lapply(filenames, read_csv) %>% 
  bind_rows()
Run Code Online (Sandbox Code Playgroud)

这种方法很好.但是,我需要从每个文件名中提取一个子字符串,并将其作为列添加到最终表中.我可以使用"str_extract()"得到我需要的子字符串,如下所示:

sites <- str_extract(filenames, "[A-Z]{2}-[A-Za-z0-9]{3}")
Run Code Online (Sandbox Code Playgroud)

然而,我被困在如何将提取的子字符串添加为列,因为lapply()通过read_csv()为每个文件运行.

r lapply

5
推荐指数
3
解决办法
3749
查看次数

标签 统计

r ×3

csv ×1

import ×1

lapply ×1

r-faq ×1