使用cumax制作新列

时间:2019-10-18 04:23:51

标签: r dataframe

我的数据集中有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。

0 个答案:

没有答案