在具有三列的大型資料框(“系結”)中,我必須添加第四列,其值有條件地基于前三列。
是關于旅行的。一個人 (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 作業了幾天。
謝謝你的幫助!!
uj5u.com熱心網友回復:
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
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/451704.html
