如何相对于一列增加不同列的值

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])

以上是关于如何相对于一列增加不同列的值的主要内容,如果未能解决你的问题,请参考以下文章

如何使一个材料表列的编辑模式字段类型依赖于另一列的值,而不影响其他行?

SQL如何查询出某一列中不同值出现的次数?

如何获得每列的最大值?

仅当值存在于 SQL 的另一列中时,如何选择列的值?

jqgrid怎么统计一列的值?

如何获取Ilist集合中的一列值