【问题标题】:cyclic permutation or numpy.roll() type function to dplyr groupdplyr 组的循环排列或 numpy.roll() 类型函数
【发布时间】:2016-03-31 19:46:33
【问题描述】:

如果我有这样的数据:

g in
1 a
1 b
1 c
1 d
2 e
2 f
2 g
2 h

g 是组我如何使用 dplyr 创建第二列,其值如下:

g in out
1 a  b
1 b  c
1 c  d
1 d  a
2 e  f
2 f  g
2 g  h
2 h  e

这是一个 roll() 或排列,它将第一行放在最后。我已经使用标准评估函数尝试了超前/滞后、c() 内的矢量切片、尾/头的组合。我要么没有得到想要的排列,NA(我不想要),要么没有从因子到 int 的类型转换。

【问题讨论】:

    标签: r dplyr


    【解决方案1】:

    我们可以使用leaddefault 作为“In”的first

    library(dplyr)
    df1 %>% 
        group_by(g) %>% 
        mutate(Out=dplyr::lead(In, default=first(In)))
    #       g    In   Out
    #  (int) (chr) (chr)
    #1     1     a     b
    #2     1     b     c
    #3     1     c     d
    #4     1     d     a
    #5     2     e     f
    #6     2     f     g
    #7     2     g     h
    #8     2     h     e
    

    注意:我将列名从“in”更改为“In”,因为在mutate 内调用时可能会产生一些麻烦。

    【讨论】:

    • 哇,谢谢!我没有使用 dplyr:: 版本,也不知道默认参数。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-03-26
    • 1970-01-01
    • 2013-09-18
    • 1970-01-01
    • 2019-08-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多