我在 R 中聚合了一堆 CSV 文件,我使用以下代码成功完成了这些文件(在这里找到):
Tbl <- list.files(path = "./Data/CSVs/",
pattern="*.csv",
full.names = T) %>%
map_df(~read_csv(., col_types = cols(.default = "c")))
Run Code Online (Sandbox Code Playgroud)
我想在 Tbl 中包含 .csv 文件名(最好没有文件扩展名)作为一列。我找到了一个使用 plyr 的解决方案,但我想坚持使用 dplyr,因为 plyr 会导致我的代码进一步出现故障。
有什么办法可以在上面的代码中添加一些东西来告诉 R 在 Tbl$filename 中包含文件名吗?
非常感谢!
这是我的解决方案。如果这有帮助,请告诉我。
Tbl <- list.files(path = "./Data/CSVs/",
pattern="*.csv",
full.names = T) %>%
map_df(function(x) read_csv(x, col_types = cols(.default = "c")) %>% mutate(filename=gsub(".csv","",basename(x))))
Run Code Online (Sandbox Code Playgroud)
由于 .csv 中数据的格式不清楚,因此很难确切地知道您想要什么。但尝试一下gsub。假设您在 Tbl.list 中有文件列表:
library(dplyr)
Tbl.list <- list.files(path = "./Data/CSVs/",
pattern="*.csv",
full.names = T)
Run Code Online (Sandbox Code Playgroud)
转换为 data.frame,然后改变文件名,将“.csv”替换为“”:
Tbl.df <- data.frame( X1 = Tbl.list ) %>%
mutate( filename_wo_ext = gsub( ".csv", "", X1 ) )
Run Code Online (Sandbox Code Playgroud)
您也可以尝试以下方法,但我不确定它是否有效。(假设你还有Tbl.list)。首先更改 map_df 语句以添加index列:
map_df(~ read_csv(., col_types = cols(.default = "c")),
.id="index") %>%
mutate( gsub( ".csv", "", Tbl.list[as.numeric(index)] )
Run Code Online (Sandbox Code Playgroud)
该列index应包含字符向量 [1...n]。该mutate语句将在 Tbl.list 中查找,获取 处的文件名index,并用 "" 替换 ".csv" 。
| 归档时间: |
|
| 查看次数: |
3338 次 |
| 最近记录: |