定义一个新变量来计算带有另一列的组元素

时间:2019-09-22 15:54:08

标签: r dataframe

我有2列,HHVEH和SAMPN组。 SAMPN的所有成员都具有相同的HHVEH。我想定义一个新列,直到HHVEH的数量为2。

示例

TYPE_WALLPAPER

输出

          SAMPN      PERNO HHVEH
            1          1     1
            1          2     1
            1          3     1
            2          1     2
            3          2     2
            3          3     2
            4          4     0
            4          3     0

说明:第一组HHVEH == 1,因此第一行为2,其他行为NA。第二组HHVEH == 2所以它的前2个子项应该是2,但是只有一行,所以行是2。第三组HHVEH == 2都得到2最后一个HHVEH == 0,所以所有的NA >

          SAMPN      PERNO HHVEH      mode.car
            1          1     1           2
            1          2     1           NA
            1          3     1           NA
            2          1     2           2
            3          2     2           2
            3          3     2           2
            4          4     0          NA
            4          3     0          NA

1 个答案:

答案 0 :(得分:2)

这是基于更新数据的一种选择。在按“ SAMPN”分组后,通过rep根据“ HHVEH”中的first值将2和其余的NA

来创建“ mode.car”
library(dplyr)
df1 %>%
   group_by(SAMPN) %>% 
   mutate(mode.car = rep(c(2, NA_integer_), 
           c(pmin(n(), first(HHVEH)), pmax(0, n() - first(HHVEH)))))
# A tibble: 11 x 4
# Groups:   SAMPN [3]
#   SAMPN   HHVEH PERNO mode.car
#   <chr>   <dbl> <fct>    <dbl>
# 1 "  827"     3 2            2
# 2 "  827"     3 4            2
# 3 " 1133"     2 4            2
# 4 " 1133"     2 3            2
# 5 " 1133"     2 3           NA
# 6 " 1133"     2 5           NA
# 7 " 1133"     2 1           NA
# 8 " 1133"     2 1           NA
# 9 " 1857"     3 3            2
#10 " 1857"     3 2            2
#11 " 1857"     3 3            2