【问题标题】:How to create a column based on values in the rows below the row in a different column如何根据不同列中行下方的行中的值创建列
【发布时间】:2020-05-25 23:22:49
【问题描述】:

我有一个这样的数据集

data <- data.frame(A = c(3,12,3,5,6,3,9,134,13,23))

我想使用 A 行的值来创建一个基于 A 下面的一行的新列 B。 像这样:

     A   B
1    3  12
2   12   3
3    3   5
4    5   6
5    6   3
6    3   9
7    9 134
8  134  13
9   13  23
10  23  NA

我尝试过使用 dplyr(即 mutate),但我有点难过。

谢谢!

【问题讨论】:

    标签: r rows dplyr


    【解决方案1】:

    我们可以使用lead

    library(dplyr)
    data <- data %>%
               mutate(B = lead(A))
    data
    #     A   B
    #1    3  12
    #2   12   3
    #3    3   5
    #4    5   6
    #5    6   3
    #6    3   9
    #7    9 134
    #8  134  13
    #9   13  23
    #10  23  NA
    

    或使用base R 删除“A”的第一个元素并在末尾附加NA

    data$B <- c(data$A[-1], NA)
    

    【讨论】:

      【解决方案2】:

      你可以使用tail

      data$B <- c(tail(data$A, -1), NA)
      data
      #     A   B
      #1    3  12
      #2   12   3
      #3    3   5
      #4    5   6
      #5    6   3
      #6    3   9
      #7    9 134
      #8  134  13
      #9   13  23
      #10  23  NA
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2021-12-26
        • 1970-01-01
        • 1970-01-01
        • 2021-12-01
        • 1970-01-01
        • 1970-01-01
        • 2022-01-01
        • 1970-01-01
        相关资源
        最近更新 更多