使用这样的示例数据:
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
元素放入向量中
在末尾填充n
的NA
值
您可以使用一个简单的函数来做到这一点:
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/