如何相对于一列增加不同列的值
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何相对于一列增加不同列的值相关的知识,希望对你有一定的参考价值。
假设我有
SAMPN PERNO loop car bus walk mode
1 1 1 3.4 2.5 1.5 1
1 1 1 3 2 1 2
1 1 1 4 2 5 3
1 1 2 14 1 3 1
1 1 2 5 8 2 1
2 1 1 1 5 5 3
2 1 1 9 4 3 3
模式列与汽车和步行交叉。
mode==1 walk
mode==2 car
mode==3 bus
SAMPN是家庭,PERNO成员的家庭索引,每个人的环游。我想在每个循环中添加每个家庭中每个人的模式值。
例如在第一家庭SAMPN==1
第一人称PERNO==1
中,我们有3行用于第一次旅行loop==1
。在此巡视模式下,第一行的模式是步行(mode==1
),第二行的模式是汽车(mode==2
),第三行的模式是公共汽车(mode==3
)
所以我将乘第二排的汽车和第三排的巴士3.4 + 2 + 5 = 10.4来增加第一排的步行路程。对其他人一样
输出:
SAMPN PERNO loop car bus walk mode utility
1 1 1 3.4 2.5 1.5 1 10.4
1 1 1 3 2 1 2 10.4
1 1 1 4 2 5 3 10.4
1 1 2 14 1 3 1 19
1 1 2 5 8 2 1 19
2 1 1 1 5 5 3 8
2 1 1 9 4 3 3 8
答案
df %>%
mutate(value = case_when(mode == 1 ~ car, # using the order in the example,
mode == 2 ~ bus, # not the order in the table
mode == 3 ~ walk,
TRUE ~ 0)) %>%
count(SAMPN, PERNO, loop, wt = value, name = "value")
## A tibble: 3 x 4
# SAMPN PERNO loop value
# <int> <int> <int> <dbl>
#1 1 1 1 10.4
#2 1 1 2 19
#3 2 1 1 8
另一答案
我们可以做
library(dplyr)
df1 %>%
group_by(SAMPN) %>%
mutate(utility = first(car) + bus[2] + walk[3])
以上是关于如何相对于一列增加不同列的值的主要内容,如果未能解决你的问题,请参考以下文章