在R中合并一堆数据文件

时间:2019-03-28 17:23:08

标签: r datatable dplyr

样品

var words = "apple;banana;apple, banana;fruit"

var result = words.split(';');

console.log(result);

我有fileABC和fileQWE。首先,这些文件包含我要消除的随机*。其次,我想读入R的两个文件并将它们另存为fileABC和fileQWE。然后,我想创建数据帧WANT,该数据帧将两个文件中的var1和两个文件中的var2组合在一起,并根据其来源,使新变量“ source”等于fileABC或fileQWE。我进行了尝试,但是您可以运行并看到它不起作用。

1 个答案:

答案 0 :(得分:1)

我们可以使用bind_rows并用parse_number提取数字元素

library(tidyverse)
bind_rows(lst(fileABC, fileQWE), .id = 'source') %>% 
       mutate_at(vars(starts_with("var")), 
            list(~ readr::parse_number(as.character(.))))

或使用base R

lst1 <- mget(ls(pattern = "^file"))
out <- do.call(rbind, Map(cbind, lst1, source = names(lst1)))
row.names(out) <- NULL
out[2:3] <- lapply(out[2:3], function(x) as.numeric(sub("*", "", x, fixed = TRUE)))

如果我们想直接从.csv文件中读取文件(假设文件位于工作目录中)

files <- list.files(pattern = ".csv")
names(files) <- str_remove(files, "\\.csv")
library(readr)
imap_dfr(files, ~ read.csv(.x) %>%
                 mutate_at(vars(starts_with("var")), 
                    list(~ readr::parse_number(.))) %>%
                 mutate(source = .y))