2017-05-31 73 views
1

我有一個具有某些事件日期的數據框。如何根據R中的條件分離矢量

我用difftime來計算每個事件之間的延遲,但現在我想爲每個第一個事件創建一個因子。

這裏是我的嘗試:

dataframe$delay.event.A = difftime(dataframe$dateA, dataframe$dateStart, units = "days") 
dataframe$delay.event.B = difftime(dataframe$dateB, dataframe$dateStart, units = "days") 
dataframe$delay.event.C = difftime(dataframe$dateC, dataframe$dateStart, units = "days") 
dataframe$delay.first.event = pmin.int(dataframe$delay.event.A, dataframe$delay.event.B, dataframe$delay.event.C, na.rm = TRUE) 

dataframe$event.status = ifelse(
    dataframe$delay.first.event==dataframe$delay.event.A, "event A", ifelse(
    dataframe$delay.first.event==dataframe$delay.event.B, "event B", ifelse(
     dataframe$delay.first.event==dataframe$delay.event.C, "event C" , "no event" 
))) 

這是不工作的,就像每個ifelse被覆蓋前一個。

我該怎麼做?

+0

如果我不夠清楚,請不要猶豫,要求提供更多信息。 –

+1

請分享一些數據和期望的輸出 – Sotos

+2

你可以做'dput(head(dataframe [,c(「dateA」,「dateB」,「dateC」)],50)''並粘貼你在結束時得到的問題,以便我們可以重現它? –

回答

1

像這樣的東西可能會讓你找到你想要的東西。

library(dplyr) 

dataframe <- dataframe %>% 
      mutate(event.status = case_when(.$first.event == .$delay.event.A 
              ~ "event A", 
              .$first.event == .$delay.event.B 
              ~ "event B", 
              .$first.event == .$delay.event.C 
              ~ "event C", 
              TRUE 
              ~ "no event" 
              ) 
        ) 
+0

完美!謝謝 –