[英]R merge based on condition other than equality
我有一個類似於以下內容的數據框:
date minutes_since_midnight value
2015-01-01 50 2
2015-01-01 60 1.5
2015-01-02 45 3.3
2015-01-03 99 5.5
和另一個看起來像這樣的數據框架
date minutes_since_midnight other_value
2015-01-01 55 12
2015-01-01 80 33
2015-01-02 45 88
我想要做的是添加另一列於第一數據幀,這是布爾值在所述第二數據幀中是否存在用於在日期列相等的值,然后minutes_since_midnight 小於或等於 minutes_since_midnight行從第一個數據框。 因此,對於上面的示例數據,我們得到:
date minutes_since_midnight value has_other_value
2015-01-01 50 2 False
2015-01-01 60 1.5 True
2015-01-02 45 3.3 True
2015-01-03 99 5.5 False
我怎樣才能做到這一點?
希望這是有道理的,
提前致謝
我可能會沿着另一個答案的行加入data.frames,然后創建變量並刪除不需要的列。 但是這里有一個選項,使用dplyr
包來執行描述它們的步驟:
library(dplyr)
df1$has_other_value <-
left_join(df1, df2 %>%
group_by(date) %>%
summarise(minMins = min(minutes_since_midnight)),
by="date")$minMins <= df1$minutes_since_midnight
df1$has_other_value[is.na(df1$has_other_value)] <- FALSE
結果:
date minutes_since_midnight value has_other_value
1 2015-01-01 50 2.0 FALSE
2 2015-01-01 60 1.5 TRUE
3 2015-01-02 45 3.3 TRUE
4 2015-01-03 99 5.5 FALSE
您是否可以將變量minutes_since_midnight重命名為minutes_since_midnight1和minutes_since_midnight2 ,將兩個數據框合並在一起,然后使用if else語句創建所需的has_other_value變量。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.