r - 如何在 r 中将整行向右移动然后删除第一列?

标签 r dplyr tidyverse

您好,我有一个表格数据,其中最后一行较早出现一个位置并生成一个新变量 X。我想将最后一行的元素向右移动一个位置,然后删除第一列(变量 X)。 我的数据是这样的-

X <- c(NA, NA, NA, NA, NA, "F")
  name <- c("A", "B", "C", "D", "E", 20 )
  var2 <- c(55, 45, 67, 32, 99, 54 )
  var3 <- c(70, 71, 40, 56, 43, 56 )
  var4 <- c(72, 09, 42, 53, 66, 33 )
  var5 <- c(60, 21, 82, 63, 44, NA )
  
  dW_before <- data.frame(X, name, var2, var3, var4, var5)
  

我的预期结果是 -


  name <- c("A", "B", "C", "D", "E", "F" )
  var2 <- c(55, 45, 67, 32, 99, 20 )
  var3 <- c(70, 71, 40, 56, 43, 54 )
  var4 <- c(72, 09, 42, 53, 66, 56 )
  var5 <- c(60, 21, 82, 63, 44, 33 )
  
  dW_after <- data.frame( name, var2, var3, var4, var5)
  
  

因此,在最终结果中,我如何将最后一行右移到一列并删除变量 X,它对所有单元格变为 NA

谢谢!

最佳答案

为“X”列(即第一列)中的非 NA 元素创建索引。使用它来索引行的子集,同时将列索引指定为 -1(选择第一列以外的列)和 -ncol(选择第一列以外的列)最后)在分配列索引的rhs和lhs中

i1 <- !is.na(dW_before$X)
dW_before[i1, -1] <- dW_before[i1, -ncol(dW_before)] 
out <- dW_before[-1]

-输出

out
  name var2 var3 var4 var5
1    A   55   70   72   60
2    B   45   71    9   21
3    C   67   40   42   82
4    D   32   56   53   63
5    E   99   43   66   44
6    F   20   54   56   33

关于r - 如何在 r 中将整行向右移动然后删除第一列?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68041903/

相关文章:

r - 使用聚合的数据帧子集的相关性

r - 自定义x轴刻度

r - 是否有将 p.value 转换为显着性代码的 R 函数?

r - 在 r 中按时间分组的累积计数

r - 导出到 csv,同时保留 R 中 ".0"中表示的整数的数字

r - 在 windows 和 linux 中使用 R 的不同结果

r - 在 Likert 的各个条形图上叠加百分比

r - 使用 dplyr 从 SQL 语句创建表

r - 在 R 中将全名与倒序匹配

r - 转换数据框(按计数交叉表)