r - 将数据框的单列上移值

标签 r dataframe

使用这样的示例数据:

example=data.frame(x=c(1,2,3,4,5,6,7,8), y=c(1,2,3,4,5,6,7,8), z=c(1,2,3,4,5,6,7,8))


看起来像这样:

    x   y   z
1   1   1   1
2   2   2   2
3   3   3   3
4   4   4   4
5   5   5   5
6   6   6   6
7   7   7   7
8   8   8   8


我想将z列中的所有值向上移动两行,而数据框的其余部分保持不变。
结果应如下所示:

    x   y   z
1   1   1   3
2   2   2   4
3   3   3   5
4   4   4   6
5   5   5   7
6   6   6   8
7   7   7   NA
8   8   8   NA


我只找到了将列的值向下移动或整个数据框移动的方法。

有任何想法吗?
谢谢!

最佳答案

您的问题简化为:


将第一个n元素放入向量中
在末尾填充nNA


您可以使用一个简单的函数来做到这一点:

shift <- function(x, n){
  c(x[-(seq(n))], rep(NA, n))
}

example$z <- shift(example$z, 2)


结果:

example
  x y  z
1 1 1  3
2 2 2  4
3 3 3  5
4 4 4  6
5 5 5  7
6 6 6  8
7 7 7 NA
8 8 8 NA

关于r - 将数据框的单列上移值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25995257/

相关文章:

r - 矩阵不被视为数字 R

python - 如何从数据框中删除特定列

Python Pandas 遍历整个列并检查它是否包含某个 str

dataframe - 在 MATLAB 中按值对数据进行排序

r - 使用 2 个数据帧在 R 中进行有效的子集化

R2WinBUGS 错误 - 陷阱 - 不兼容的副本

r - 粘贴字符限制

r - 将一行中的值添加到 R 中的前一个

python - Pandas 数据框索引从日期时间中删除日期

python - 如何从分区 DF(非唯一索引)中选择带有索引列表的数据?