我正在使用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
我編輯了問題以包含數據和我的數據清理過程。我懷疑我的問題在於我如何重新格式化日期或如何讀取日期。 –