我的数据集中有4列。第一个家庭成员,第二个家庭成员,col3是一个人的出行次数,col4该人的活动地点,而col5是我想要做的事情。
family persons trip activity
1 1 1 home
1 1 2 work
1 1 3 shopping
1 1 4 home
1 1 5 friends
1 1 6 home
1 2 1 home
1 2 2 work
1 2 3 home
从上面的数据集中可以看到,我们有第一家庭的2个人的信息。第一个人有6次旅行,第二个人有3次旅行。在我的分析中,家很重要。我想根据家庭活动进行循环。换句话说,每个循环都是一组在家中开始并在家中完成的活动。对于第一个人,我们有2个循环:
first loop: home-> work -> shoping -> home
second loop: home -> friends -> home
对于第二人称,我们有1个循环
loop: home -> work -> home
我想添加一列来确定此数据集中的循环数,如下所示:
family persons trip place loop
1 1 1 home 1
1 1 2 work 1
1 1 3 shopping 1
1 1 4 home 1
1 1 5 friends 2
1 1 6 home 2
1 2 1 home 1
1 2 2 work 1
1 2 3 home 1
在按“人”,“家庭”分组之后,通过获取逻辑向量的累加总和并lag
基于输出的来创建基于“家”的索引
library(dplyr)
df1 %>%
group_by(family, persons) %>%
mutate(loop = lag(cumsum(activity == "home"), default = 1))
# A tibble: 9 x 4
# Groups: persons [2]
# persons trip activity loop
# <int> <int> <chr> <dbl>
#1 1 1 home 1
#2 1 2 work 1
#3 1 3 shopping 1
#4 1 4 home 1
#5 1 5 friends 2
#6 1 6 home 2
#7 2 1 home 1
#8 2 2 work 1
39 2 3 home 1
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句