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

New column - multiple conditions from multiple rows and columns

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

这是关于旅行的。一个人 (id) 有多种旅行方式(例如公共汽车、汽车、火车……)。例如,有时一个人有多种乘火车从 A 到 B 的选择。

我的数据框如下所示:

main_mode duration id
train 1250 1
train 900 1
car 540 1
train 650 2
car 450 2
plane 350 2
train 350 3
car 890 3

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

我想要的:

main_mode duration id train_avail
train 1250 1 0
train 900 1 1
car 540 1 NA
train 650 2 1
car 450 2 NA
plane 350 2 NA
train 350 3 1
car 890 3 NA

感谢您的帮助!!

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