簡體   English   中英

根據來自另一個 dataframe 的日期添加數據

[英]Adding data based on date from another dataframe

我有兩個數據集。 一個有多個日期:

date, time
1   2013-05-01 12:43:34
2   2013-05-02 05:04:23
3   2013-05-02 09:34:34
4   2013-05-02 12:32:23
5   2013-05-03 23:23:23
6   2013-05-04 15:34:17

一個有日出和日落數據:

Sunrise                Sunset 
2013-05-01 06:43:00    2013-05-01  21:02:12
2013-05-02 06:44:00    2013-05-02  21:03:13
2013-05-03 06:44:56    2013-05-03  21:04:02
2013-05-04 06:45:32    2013-05-04  21:05:00

我想根據第一個 dataframe 的日期和時間是否介於日出和日落時間和日期之間,在第一個 dataframe 中添加一個“白天”或“夜晚”的列。

date, time                 Day or night
1   2013-05-01 12:43:34    Day
2   2013-05-02 05:04:23    Night
3   2013-05-02 09:34:34    Day
4   2013-05-02 12:32:23    Day
5   2013-05-03 23:23:23    Night
6   2013-05-04 15:34:17    Day

我嘗試了復制和 if_else 函數,但行的長度不同,因為一年我有 365 次日出和日落,但我也有一天的多次測量(總共 28000 行)。

誰能幫我解決我的問題。 提前致謝。

df1 <- structure(list(date_time = c("2013-05-01 12:43:34", "2013-05-02 05:04:23", 
"2013-05-02 09:34:34", "2013-05-02 12:32:23", "2013-05-03 23:23:23", 
"2013-05-04 15:34:17")), row.names = c(NA, -6L), class = c("data.frame"))

df2 <- structure(list(Sunrise = c("2013-05-01 06:43:00", "2013-05-02 06:44:00", 
"2013-05-03 06:44:56", "2013-05-04 06:45:32"), Sunset = c("2013-05-01 21:02:12", 
"2013-05-02 21:03:13", "2013-05-03 21:04:02", "2013-05-04 21:05:00"
)), row.names = c(NA, -4L), class = c("data.frame"))

# prepare df1
df1 <- df1 %>%
  mutate(date_time = as.POSIXct(date_time, tz = "UTC")) %>%
  mutate(Date = as.Date(date_time))

# prepare df2
df2 <- df2 %>%
  mutate(Sunrise = as.POSIXct(Sunrise, tz = "UTC")) %>%
  mutate(Sunset = as.POSIXct(Sunset, tz = "UTC")) %>%
  mutate(Date = as.Date(Sunrise))

library(lubridate) # for the use of interval

merge(df1, df2, by = "Date") %>%
  mutate(DayOrNight = ifelse(date_time %within% interval(Sunrise, Sunset), "Day", "Night"))

#         Date           date_time             Sunrise              Sunset DayOrNight
# 1 2013-05-01 2013-05-01 12:43:34 2013-05-01 06:43:00 2013-05-01 21:02:12        Day
# 2 2013-05-02 2013-05-02 05:04:23 2013-05-02 06:44:00 2013-05-02 21:03:13      Night
# 3 2013-05-02 2013-05-02 09:34:34 2013-05-02 06:44:00 2013-05-02 21:03:13        Day
# 4 2013-05-02 2013-05-02 12:32:23 2013-05-02 06:44:00 2013-05-02 21:03:13        Day
# 5 2013-05-03 2013-05-03 23:23:23 2013-05-03 06:44:56 2013-05-03 21:04:02      Night
# 6 2013-05-04 2013-05-04 15:34:17 2013-05-04 06:45:32 2013-05-04 21:05:00        Day

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM