如何使用某些数据为组查找新列?

时间:2019-09-01 08:00:21

标签: r dataframe

我有一个家庭。每个家庭中每个成员都有一些数据。我需要找到乘坐公共汽车旅行的会员的旅行费用。 30天的票价为84美元,因此每天为2.8美元,这对学生和60岁以上的人来说是一半。由于每次旅行没有限制,因此我想根据每个人的旅行次数潜水2.8。如果一个人没有公车旅行,则为零。

这是一个示例:

     household     person      trip       mode       student     age
         1            1          1          car         1         23
         1            1          2           bus        1         23
         1            1          3           bus        1         23
         1            2          1          car         0         65
         1            2          2           walk       0         65
         1            2          3           bus        0         65
         2            1          1            bus       0         18
         2            1          2            bus       0         18
         2            2          1             walk     0          40

输出

      household     person      trip       mode       student     age   Fare
         1            1          1          car         1         23    1.4/2
         1            1          2           bus        1         23   1.4/2
         1            1          3           bus        1         23   1.4/2
         1            2          1          car         0         65   1.4/1
         1            2          2           walk       0         65   1.4/1
         1            2          3           bus        0         65   1.4/1
         2            1          1            bus       0         18   2.8/2
         2            1          2            bus       0         18   2.8/2
         2            2          1             walk     0          40   0

第一人称是学生,乘公共汽车2趟,所以费用是1.4 / 2,第二个人是坐公共汽车1趟,年龄65岁以上。在第二个家庭中,第一人称乘公共汽车旅行有2趟,但是他是杨而不是学生,所以费用是2.8 / 2,最后一个人无公共汽车乘车,所以0。

1 个答案:

答案 0 :(得分:2)

这是使用dplyr的一种方法。我们将数据帧按householdperson分组,如果此人是student或拥有age > 60,我们将一半rate应用于一半,然后除以次数{{1 }}。

mode == "bus"