簡體   English   中英

R基於平等以外的條件合並

[英]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_midnight1minutes_since_midnight2 ,將兩個數據框合並在一起,然后使用if else語句創建所需的has_other_value變量。

暫無
暫無

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

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