新列 - 来自多行和多列的多个条件

艾尔莎

在具有三列的大型数据框(“绑定”)中,我必须添加第四列,其值有条件地基于前三列。

是关于旅行的。一个人 (id) 有多种旅行选择(例如公共汽车、汽车、火车……),它们总是完全不同的。例如,有时一个人有多种选择乘坐火车从 A 到 B。

我的数据框如下所示:

主模式 期间 ID
火车 1250 1
火车 900 1
540 1
火车 650 2
450 2
飞机 350 2
火车 350 3
890 3

现在我想创建一个新列“train_avail”。如果火车旅行的时间是汽车旅行的两倍,那么我想在新列中写 train_avail = 0,否则写 1。

我想拥有什么:

主模式 期间 ID train_avail
火车 1250 1 0
火车 900 1 1
540 1 不适用
火车 650 2 1
450 2 不适用
飞机 350 2 不适用
火车 350 3 1
890 3 不适用

这就是我尝试过的,但显然不起作用。在我完全一无所知的情况下,我不知道如何编写代码。

bind %>%
  group_by(id) %>%
  mutate(train_avail = ifelse((bind$main_mode = train) & (duration = 2 * (bind$main_mode = car)) ~ '0', '1'))

对不起,我完全不知道这应该如何工作。我只用 R 工作了几天。

谢谢你的帮助!!

斯特凡诺·巴比
df |>
group_by(id) |>
  mutate(train_avail = {
    car <- min(duration[main_mode == "car"])
    if_else(main_mode == "train",
            if_else(duration > 2* car, 0, 1),
            NA_real_)
    })

##> + # A tibble: 8 × 4
##> # Groups:   id [3]
##>   main_mode duration    id train_avail
##>   <chr>        <int> <int>       <dbl>
##> 1 train         1250     1           0
##> 2 train          900     1           1
##> 3 car            540     1          NA
##> 4 train          650     2           1
##> 5 car            450     2          NA
##> 6 plane          350     2          NA
##> 7 train          350     3           1
##> 8 car            890     3          NA

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章