【问题标题】:How to separate a vector based on conditions in R如何根据 R 中的条件分离向量
【发布时间】:2017-05-31 12:42:25
【问题描述】:

我有一个包含一些事件日期的数据框。

我使用 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 都在覆盖前一个。

我该怎么做?

【问题讨论】:

  • 如果我不够清楚,请随时询问更多信息。
  • 请分享一些数据和预期输出
  • 您能做到dput(head(dataframe[,c("dateA","dateB","dateC")],50)) 并在问题的末尾粘贴您得到的内容,以便我们重现它吗?

标签: r r-factor


【解决方案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"
                                            )
                    )

【讨论】:

  • 完美!谢谢
猜你喜欢
  • 2018-04-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-01-25
  • 2015-06-19
  • 2019-03-09
  • 2020-07-13
相关资源
最近更新 更多