我有這個由三個變陣列成的資料框: id, wwb and ub_bene
id wwb ub_bene
<dbl> <dbl> <dbl>
1 800009 0 0
2 800009 0 1
3 800009 1 0
4 800009 1 0
5 800009 0 0
6 800015 0 0
7 800015 0 1
8 800015 0 0
9 800015 1 0
10 800015 0 1
11 800033 NA NA
12 800033 NA NA
13 800042 0 0
14 800042 0 1
15 800042 NA NA
然而。我正在尋找某種方法將這些變數合二為一,以便:
如果wwb = 1,則 C 列將為 2,如果ub_bene = 1,則 C 列將為 1,否則為 0。
這就是我想要獲得的:
id wwb ub_bene c
<dbl> <dbl> <dbl> <dbl>
1 800009 0 0 0
2 800009 0 1 1
3 800009 1 0 2
4 800009 1 0 2
5 800009 0 0 0
6 800015 0 0 0
7 800015 0 1 1
8 800015 0 0 0
9 800015 1 0 2
10 800015 0 1 1
11 800033 NA NA NA
12 800033 NA NA NA
13 800042 0 0 0
14 800042 0 1 1
15 800042 NA NA NA
任何簡單的解決方案來獲得這個?
提前致謝!
uj5u.com熱心網友回復:
您可以對列應用簡單的數學運算,例如,
df$c <- df[,2] *2 df[,3]
uj5u.com熱心網友回復:
嘗試嵌套ifelse:
df$c <- ifelse(df$wwb == 1, 2, ifelse(df$ub_bene == 1, 1, 0))
uj5u.com熱心網友回復:
計算 cumsum 的總和,使用matrixStats.
matrixStats::rowSums2(matrixStats::rowCumsums(dat[2:3] == 1))
# [1] 0 1 2 2 0 0 1 0 2 1 NA NA 0 1 NA
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/390175.html
