2017-05-31 57 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

完美!谢谢 –