【问题标题】:Assign direction based on values in another column根据另一列中的值分配方向
【发布时间】:2019-08-02 05:35:58
【问题描述】:

我有这个示例数据集 (df):

structure(list(sensor = c(12, 12, 12, 8, 12, 12, 8)), class = "data.frame", row.names = c(NA, 
-7L))

我想创建一个名为 direction 的新列,其中任何时候 sensor 从 12 变为 8,我将在与 12 相同的行中输入 out 并且任何时候 sensor 更改从 8 到 12,我会在 12 的同一行输入 in

我想要的数据集如下所示:

我正在考虑使用dplyr mutate 函数。但不能完全弄清楚这样做的最佳方法:

df %>% 
  mutate(direction = if_else(...))

【问题讨论】:

    标签: r dplyr


    【解决方案1】:

    case_when 也可以完成这项工作

    df %>%
        mutate(direction = case_when(lag(sensor)==12 & sensor==8 ~ 'out',
                                     lag(sensor)==8 & sensor==12 ~ 'in'))
    

    【讨论】:

      【解决方案2】:
      with(df1, {
          temp = c(diff(sensor), 0)
          ifelse(temp == -4, "out", ifelse(temp == 4, "in", NA))
      })
      #[1] NA    NA    "out" "in"  NA    "out" NA   
      

      【讨论】:

        猜你喜欢
        • 2018-09-09
        • 2020-12-11
        • 1970-01-01
        • 1970-01-01
        • 2020-10-29
        • 1970-01-01
        • 1970-01-01
        • 2014-08-21
        • 2016-02-01
        相关资源
        最近更新 更多