从R中的另一列创建新列

sherek_66

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

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章