根据日期列合并数据集
Merging datasets based on date column
你好 Stack 社区,
我正在尝试根据每个数据集的日期列合并两个数据集。
以下是每个数据集的快照,其中可以清楚地看到日期列仅格式化为年月日,没有指定 hour:minute:second.
dataset 1; snapshot of date column
dataset 2; snapshot of date column
我正在使用以下代码合并两个数据集:
final <- merge(dataset1, dataset2, by.x="close_date", by.y = "date",all.x = TRUE, all.y = TRUE)
下面是显示上述代码结果的另一个快照。如您所见,hour:minute:second 以某种方式出现在日期列中,这会阻碍合并。
result of the merge
有没有办法正确合并两列?也许有人可以建议将 hh:mm:ss 设置为 00:00:00 的函数?顺便说一句,事先在脚本中,我使用 as.POSIXct
函数以相同的方式格式化了数据集 1 中的“close_date”列和数据集 2 中的“日期”列。
您可以在下面检查 head() 的 R 输出:
head(dataset1) %>%
select(close_date)
A tibble: 6 x 1
close_date
<dttm>
1 2020-03-01 00:00:00
2 2020-03-02 00:00:00
3 2020-03-03 00:00:00
4 2020-03-04 00:00:00
5 2020-03-05 00:00:00
6 2020-03-06 00:00:00
head(dataset2) %>%
select(date)
A tibble: 6 x 1
date
<dttm>
1 2020-03-01 00:00:00
2 2020-03-02 00:00:00
3 2020-03-03 00:00:00
4 2020-03-04 00:00:00
5 2020-03-05 00:00:00
6 2020-03-06 00:00:00
用提供的数据(以后请直接用dput(head(dataset1))
提供数据。看这里How to make a great R reproducible example
我们可以在合并之前使用 lubridate
包的 ymd
函数定义每个数据集中的日期格式:
library(lubridate)
dataset1$close_date <- ymd(dataset1$close_date)
dataset2$date <- ymd(dataset2$date)
final <- merge(dataset1, dataset2, by.x="close_date", by.y = "date",all.x = TRUE, all.y = TRUE)
final
close_date coin case_count_world_
1 2020-03-01 BTCUSDT
2 2020-03-02 BTCUSDT
3 2020-03-03 BTCUSDT
4 2020-03-04 BTCUSDT
5 2020-03-05 BTCUSDT
6 2020-03-06 <NA>
7 2020-03-07 <NA>
8 2020-03-08 <NA>
数据:
dataset1 <- structure(list(close_date = structure(c(18322, 18323, 18324,
18325, 18326), class = "Date"), coin = c("BTCUSDT", "BTCUSDT",
"BTCUSDT", "BTCUSDT", "BTCUSDT")), row.names = c(NA, -5L), class = c("tbl_df",
"tbl", "data.frame"))
dataset2 <- structure(list(date = structure(c(18322, 18323, 18324, 18325,
18326, 18327, 18328, 18329), class = "Date"), case_count_world_ = c("",
"", "", "", "", "", "", "")), row.names = c(NA, -8L), class = c("tbl_df",
"tbl", "data.frame"))
你好 Stack 社区,
我正在尝试根据每个数据集的日期列合并两个数据集。 以下是每个数据集的快照,其中可以清楚地看到日期列仅格式化为年月日,没有指定 hour:minute:second.
dataset 1; snapshot of date column
dataset 2; snapshot of date column
我正在使用以下代码合并两个数据集:
final <- merge(dataset1, dataset2, by.x="close_date", by.y = "date",all.x = TRUE, all.y = TRUE)
下面是显示上述代码结果的另一个快照。如您所见,hour:minute:second 以某种方式出现在日期列中,这会阻碍合并。
result of the merge
有没有办法正确合并两列?也许有人可以建议将 hh:mm:ss 设置为 00:00:00 的函数?顺便说一句,事先在脚本中,我使用 as.POSIXct
函数以相同的方式格式化了数据集 1 中的“close_date”列和数据集 2 中的“日期”列。
您可以在下面检查 head() 的 R 输出:
head(dataset1) %>%
select(close_date)
A tibble: 6 x 1
close_date
<dttm>
1 2020-03-01 00:00:00
2 2020-03-02 00:00:00
3 2020-03-03 00:00:00
4 2020-03-04 00:00:00
5 2020-03-05 00:00:00
6 2020-03-06 00:00:00
head(dataset2) %>%
select(date)
A tibble: 6 x 1
date
<dttm>
1 2020-03-01 00:00:00
2 2020-03-02 00:00:00
3 2020-03-03 00:00:00
4 2020-03-04 00:00:00
5 2020-03-05 00:00:00
6 2020-03-06 00:00:00
用提供的数据(以后请直接用dput(head(dataset1))
提供数据。看这里How to make a great R reproducible example
我们可以在合并之前使用 lubridate
包的 ymd
函数定义每个数据集中的日期格式:
library(lubridate)
dataset1$close_date <- ymd(dataset1$close_date)
dataset2$date <- ymd(dataset2$date)
final <- merge(dataset1, dataset2, by.x="close_date", by.y = "date",all.x = TRUE, all.y = TRUE)
final
close_date coin case_count_world_
1 2020-03-01 BTCUSDT
2 2020-03-02 BTCUSDT
3 2020-03-03 BTCUSDT
4 2020-03-04 BTCUSDT
5 2020-03-05 BTCUSDT
6 2020-03-06 <NA>
7 2020-03-07 <NA>
8 2020-03-08 <NA>
数据:
dataset1 <- structure(list(close_date = structure(c(18322, 18323, 18324,
18325, 18326), class = "Date"), coin = c("BTCUSDT", "BTCUSDT",
"BTCUSDT", "BTCUSDT", "BTCUSDT")), row.names = c(NA, -5L), class = c("tbl_df",
"tbl", "data.frame"))
dataset2 <- structure(list(date = structure(c(18322, 18323, 18324, 18325,
18326, 18327, 18328, 18329), class = "Date"), case_count_world_ = c("",
"", "", "", "", "", "", "")), row.names = c(NA, -8L), class = c("tbl_df",
"tbl", "data.frame"))