在不同的 RStudio IDE 上用 "Date" 列绑定两个数据帧会产生不同的结果
Binding two dataframes with "Date" column on different RStudio IDEs produces different results
我正在通过将从两个不同的 GitHub 存储库获得的两个数据帧绑定在一起来生成一个新的数据帧。两个数据集都有一个 Date 列。
当我在我的机器上执行此操作时,一切都很好,我可以使用函数 rbind()
或 bind_rows()
将数据帧绑定在一起。
另一个用户尝试了相同的代码,但结果不同。特别是 Date 列被拆分。第一个数据框的日期在第一列(称为 Date)下,而第二个数据框的日期放在数据框的末尾,在一个新列(我没有未创建)称为 X.U.FEFF.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()
产生了此 image 中显示的输出。我不知道如何解决这个问题,因为我无法在我的机器上重现它。
知道导致此问题的原因吗?非常感谢。
根据评论:
将 read.csv()
更改为 read_csv()
以获得更强大的 csv 解析!
我正在通过将从两个不同的 GitHub 存储库获得的两个数据帧绑定在一起来生成一个新的数据帧。两个数据集都有一个 Date 列。
当我在我的机器上执行此操作时,一切都很好,我可以使用函数 rbind()
或 bind_rows()
将数据帧绑定在一起。
另一个用户尝试了相同的代码,但结果不同。特别是 Date 列被拆分。第一个数据框的日期在第一列(称为 Date)下,而第二个数据框的日期放在数据框的末尾,在一个新列(我没有未创建)称为 X.U.FEFF.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()
产生了此 image 中显示的输出。我不知道如何解决这个问题,因为我无法在我的机器上重现它。
知道导致此问题的原因吗?非常感谢。
根据评论:
将 read.csv()
更改为 read_csv()
以获得更强大的 csv 解析!