我的数据集中有4列。第一个家庭人数,第二个家庭成员人数,col3是一个人的出行次数,col4是该人的活动地点,col5是我想要做的事情。
family persons trip activity
1 1 1 home
1 1 2 shopping
1 1 3 home
1 1 4 eating
1 1 5 friends
1 1 6 home
1 2 1 home
1 2 2 eating
1 2 3 work
1 2 3 shopping
如您在上面的数据集中看到的,我们有第一家庭的2个人的信息。第一人称旅行6次,第二人称旅行3次。在我的分析中,家庭和工作很重要。我想根据家庭和工作活动进行循环。换句话说,每个循环都是一系列在家中开始,在家中或工作中完成的活动。对于第一个人,我们有2个循环:
first loop: home-> shopping -> home
second loop: home -> eating -> freinds ->home
对于第二人称,我们有2个循环
loop: home -> eating ->work
loop2: work ->shopping
我想添加一列来确定此数据集中的循环数,如下所示:
family persons trip place loop
1 1 1 home 1
1 1 2 shopping 1
1 1 3 home 1
1 1 4 eating 2
1 1 5 friends 2
1 1 6 home 2
1 2 1 home 1
1 2 2 eating 1
1 2 3 work 1
1 2 3 shopping 2
我有以下代码:
vals <- c("work","home")
library(dplyr)
df9<-df1 %>%
group_by(SAMPN,PERNO) %>%
mutate(loop = cummax(lag(1 + (TPURP %in% vals), default = 1)))
但是它没有给我正确的输出。当一个人有两个家时,它不会改变循环。例如,对于第一人称,它都是循环中的1。