我正在使用R与Jupyter笔记本。我使用这两个文件中的dplyr创建了两个数据帧:CSV files 为了准备数据,我从“自行车”文件中删除了列,并将日期字符串格式化为日期时间。R与Jupyter笔记本:使用dplyr内部连接两个数据帧日期
# drop colums that contain only one value
bikes <- select(bikes,-c(contract_name, bonus,banking))
# convert UNIX timestamp to a date-time
bikes$last_update <- bikes$last_update/1000
bikes$last_update <- as.POSIXct(bikes$last_update, origin="1970-01-01")
我用lubridate库转换的“Santander_Weather_F”读为“weath”将日期转换为好。
weath$Date <- parse_date_time(weath$Date, "mdy")
这是我如何创建我的新的数据帧:
avg_bikes_d <- bikes %>% select(last_update,available_bikes) %>% group_by(Date=lubridate::round_date(last_update,unit="day")) %>%
summarise(avg_bikes=round(mean(available_bikes),0))
avg_weath <- weath %>% select(Date, temp_avg, wind_avg)
第一数据帧的数量通过柱14的含义可以追溯到可重复包含的值1。由此产生的数据帧的头部看起来像这样:
| number | Date | avg_bikes |
|--------|------------|-----------|
| 1 | 2017-05-30 | 0 |
| 1 | 2017-05-31 | 0 |
| 1 | 2017-06-01 | 2 |
| 1 | 2017-06-06 | 8 |
| 1 | 2017-06-07 | 17 |
| 1 | 2017-06-08 | 31 |
| Date | temp_avg | wind_avg |
|------------|----------|----------|
| 2017-05-29 | 65 | 3 |
| 2017-05-30 | 64 | 3 |
| 2017-05-31 | 63 | 5 |
| 2017-06-01 | 66 | 3 |
| 2017-06-02 | 62 | 6 |
| 2017-06-03 | 61 | 5 |
我希望做的日期内连接: avg <- inner_join(avg_bikes_d, avg_weath, by="Date")
但所有导致是一个空的数据帧。 我试图删除第一个数据帧的数字列作为支票,但仍然没有。我检查了日期列的格式是否正确使用is.POSIXct()
我还搜索了dplyr文档和其他帖子。我可能做错了什么?
嗯,看来你做得很好......你可以通过'dput()'分享最小的数据来重现这个问题吗? – yutannihilation
我编辑了问题以包含数据和我的数据清理过程。我怀疑我的问题在于我如何重新格式化日期或如何读取日期。 –