Связывание двух фреймов данных со столбцом «Дата» в разных средах разработки RStudio дает разные результаты - PullRequest
0 голосов
/ 24 марта 2020

Я создаю новый фрейм данных, связывая вместе два фрейма данных, полученных из двух разных репозиториев GitHub. Оба набора данных имеют столбец Дата . Когда я выполняю эту операцию на моей машине, все в порядке, и я могу использовать функции rbind() или bind_rows() для связывания фреймов данных.
Другой пользователь пробовал тот же код, и результат был другим. В частности, столбец Дата разделен. Даты первого информационного кадра находятся под первым столбцом (называемым Date ), в то время как даты второго информационного кадра помещаются в конце информационного кадра, в новый столбец (который я не создал) с именем XUFEFF.Date .

Ниже приведен код, который я использовал:

library(dplyr)
library(RCurl)

setwd(dir = "YOUR_WORKING_DIRECTORY")

#####===== FIRST DATAFRAME =====#####
cases <- read.csv(text = getURL(url = "https://raw.githubusercontent.com/openZH/covid_19/master/COVID19_Cases_Cantons_CH_total.csv"),
                  header = TRUE,
                  stringsAsFactors = FALSE,
                  na.strings = c("", "NA"),
                  encoding = "UTF-8")

# Removed data for whole Switzerland and Leichtenstein
cases <- subset(x = cases,
                !is.element(el = canton,
                            set = c("CH", "FL")),
                select = c("date",
                           "canton",
                           "tested_pos"))

names(cases)[1] <- "Date"

# Dataset restructured according to the cases dataset format
cases <- reshape(data = cases,
                 idvar = "Date",
                 timevar = "canton",
                 v.names = "tested_pos",
                 direction = "wide",
                 )

names(cases) <- gsub(pattern = "tested_pos.",
                     replacement = "",
                     x = names(cases))

cases[is.na(cases)] <- 0

cases <- cases[order(cases$Date,
                     decreasing = FALSE), ]

#####===== SECOND DATAFRAME =====#####
cases2 <- read.csv(text = getURL(url = "https://raw.githubusercontent.com/daenuprobst/covid19-cases-switzerland/master/covid19_cases_switzerland.csv"),
                   header = TRUE,
                   stringsAsFactors = FALSE,
                   na.strings = c("", "NA"),
                   encoding = "UTF-8")

# Remove total daily cases for Switzerland
cases2 <- subset(x = cases2,
                 select = -c(CH))

# rbind between two cases datasets
cases_tot <- bind_rows(cases[1:7, ],
                       cases2)

write.csv(x = cases_tot,
          file = paste0(getwd(),
                        "/cases_tot.csv"),
          row.names = FALSE,
          quote = FALSE)

Для другого пользователя функция rbind() просто не работает, а функция bind_rows() производит вывод, отображаемый на этом изображении . Я не знаю, как решить эту проблему, потому что я не могу воспроизвести ее на своем компьютере.

Есть идеи о том, что является причиной этой проблемы? Большое спасибо.

1 Ответ

1 голос
/ 24 марта 2020

Согласно комментарию:

Измените read.csv() на read_csv() для более надежного анализа CSV!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...