【问题标题】:How shift data in all columns in R data frame?如何在 R 数据框中移动所有列中的数据?
【发布时间】:2022-08-13 00:07:06
【问题描述】:

我有以下 R data.frame

df <- data.table(
  id = c(1, 2, 3),
  x = c(1, NA, NA),
  y = c(NA, 2, NA),
  z = c(NA, NA, 3))

而且,我想将所有数据从“y”和所有下一列上移。最终的数据集应该如下:

df_result <- data.table(
  id = c(1, 2, 3),
  x = c(1, NA, NA),
  y = c(2, NA, NA),
  z = c(3, NA, NA))

如果可以的话请帮忙!

谢谢

    标签: r dataframe shift


    【解决方案1】:

    一种选择是在 NA 元素上使用 order

    library(data.table)
    df[, (names(df)[-1]) := lapply(.SD, \(x) x[order(is.na(x))]), .SDcols = 2:4]
    

    -输出

    > df
          id     x     y     z
       <num> <num> <num> <num>
    1:     1     1     2     3
    2:     2    NA    NA    NA
    3:     3    NA    NA    NA
    

    【讨论】:

      猜你喜欢
      • 2011-06-20
      • 1970-01-01
      • 1970-01-01
      • 2019-10-31
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多