【问题标题】:Create a new column base on existing column, but row above [duplicate]在现有列的基础上创建一个新列,但在上面的行[重复]
【发布时间】:2018-04-01 11:45:03
【问题描述】:

我想在现有列的基础上创建一个新列,但要在上面一行

开始于:

df <- data.frame(a=c(1:10), b=c("red", "yellow", "blue", "green", "yellow", "purple", "blue", "green", "yellow", "purple"))

结果如下:

df <- data.frame(a=c(1:10), b=c("red", "yellow", "blue", "green", "yellow", "purple", "blue", "green", "yellow", "purple"), c=c("na", "red", "yellow", "blue", "green", "yellow", "purple", "blue", "green", "yellow"))

感谢您提供的任何帮助

【问题讨论】:

    标签: r


    【解决方案1】:

    shift 的一种方式来自包 data.table

    library(data.table)
    df$c <- shift(df$b, 1)
    
    df
    #    a      b      c
    #1   1    red   <NA>
    #2   2 yellow    red
    #3   3   blue yellow
    #4   4  green   blue
    #5   5 yellow  green
    #6   6 purple yellow
    #7   7   blue purple
    #8   8  green   blue
    #9   9 yellow  green
    #10 10 purple yellow
    

    【讨论】:

      【解决方案2】:

      使用dplyr 这可以通过mutatelag 函数来完成:

      library(dplyr)
      mutate(df, c = lag(b))
      
      #>     a      b      c
      #> 1   1    red   <NA>
      #> 2   2 yellow    red
      #> 3   3   blue yellow
      #> 4   4  green   blue
      #> 5   5 yellow  green
      #> 6   6 purple yellow
      #> 7   7   blue purple
      #> 8   8  green   blue
      #> 9   9 yellow  green
      #> 10 10 purple yellow
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2015-07-06
        • 1970-01-01
        • 2011-07-30
        • 2010-09-15
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2022-01-23
        相关资源
        最近更新 更多