#r #csv
Вопрос:
У меня есть много csv-файлов в папке, которые расположены в четырех столбцах. Вот пример с DatA.csv.
Дата | позитивность | Полярность |
---|---|---|
12-июня-97 | 10 | 30 |
26-июня-97 | 20 | 31 |
07-Июля-97 | 22 | 27 |
Дата столбца содержит различные наблюдения в каждом из этих csv-файлов. Например, набор данных B имеет следующее:
(datB.csv)
Дата | позитивность | Полярность |
---|---|---|
14-июня-97 | 14 | 17 |
Я хочу объединить все столбцы полярности из csv-файлов в один, используя переменную «дата», сохраняя при этом имя файла. Например, выше было бы
Дата | данные | Полярность |
---|---|---|
12-июня-97 | 30 | |
14-июня-97 | 18 | |
26-июня-97 | 31 | |
07-Июля-97 | 27 |
Я не уверен, следует ли мне использовать left_join
?
Ответ №1:
Если ваши даты (ключи) встречаются в нескольких csv-файлах, и вы хотите сохранить их все, а также объединить данные за одну и ту же дату в нескольких csv-файлах, вы можете использовать внешнее соединение (т. Е. merge(..., all = TRUE)
. Подробнее о присоединениях здесь.
Если даты уникальны между csv-файлами, вам не нужно присоединяться; вы можете просто rbind
, вот так:
library(dplyr)
files <- list.files(pattern = ".csv")
files
#> [1] "DatA.csv" "DatB.csv"
output <- data.frame()
for(file in files){
f <- read.csv(file)
f[,file] <- f$polarity
output <- dplyr::bind_rows(output, f)
}
output
#> X Date positivity polarity DatA.csv DatB.csv
#> 1 1 12-Jun-97 10 30 30 NA
#> 2 2 26-Jun-97 20 31 31 NA
#> 3 3 07-Jul-97 22 27 27 NA
#> 4 1 14-Jun-97 14 18 NA 18
Created on 2021-10-06 by the reprex package (v2.0.1)
Данные:
DatA.csv <- data.frame(
Date = c("12-Jun-97", "26-Jun-97", "07-Jul-97"),
positivity = c(10, 20, 22),
polarity = c(30, 31, 27))
DatB.csv <- data.frame(Date = "14-Jun-97", positivity = 14, polarity = 18)
write.csv(DatA.csv, "DatA.csv")
write.csv(DatB.csv, "DatB.csv")
Комментарии:
1. Большое спасибо. Это так полезно. Это было именно то, что я искал. Возможно, я переосмыслил проблему.
2. Не за что! Удачи