R 在数据帧中将列上移或下移n行
假设我有以下数据。frameR 在数据帧中将列上移或下移n行,r,dataframe,multiple-columns,rows,shift,R,Dataframe,Multiple Columns,Rows,Shift,假设我有以下数据。framedf: set.seed(1) df = data.frame(a = rnorm(10), b = rnorm(10), c = rnorm(10), d = rnorm(10)) > df a b c d 1 -0.6264538 1.51178117 0.91897
df
:
set.seed(1)
df = data.frame(a = rnorm(10),
b = rnorm(10),
c = rnorm(10),
d = rnorm(10))
> df
a b c d
1 -0.6264538 1.51178117 0.91897737 1.35867955
2 0.1836433 0.38984324 0.78213630 -0.10278773
3 -0.8356286 -0.62124058 0.07456498 0.38767161
4 1.5952808 -2.21469989 -1.98935170 -0.05380504
5 0.3295078 1.12493092 0.61982575 -1.37705956
6 -0.8204684 -0.04493361 -0.05612874 -0.41499456
7 0.4874291 -0.01619026 -0.15579551 -0.39428995
8 0.7383247 0.94383621 -1.47075238 -0.05931340
9 0.5757814 0.82122120 -0.47815006 1.10002537
10 -0.3053884 0.59390132 0.41794156 0.76317575
我希望(仅)将b
、c
和d
列上移3行。列a
必须保持固定,并删除带有NAs的行
这里是我想要的3行移位输出:
> df_shift_3
a b c d
1 -0.6264538 -2.21469989 -1.98935170 -0.05380504
2 0.1836433 1.12493092 0.61982575 -1.37705956
3 -0.8356286 -0.04493361 -0.05612874 -0.41499456
4 1.5952808 -0.01619026 -0.15579551 -0.39428995
5 0.3295078 0.94383621 -1.47075238 -0.05931340
6 -0.8204684 0.82122120 -0.47815006 1.10002537
7 0.4874291 0.59390132 0.41794156 0.76317575
我如何创建一个函数,将此输出推广到n
行的up
或down
移位
我尝试使用以下函数,但没有成功
感谢您的帮助dplyr的超前/滞后
功能对此很有帮助<代码>df%>%在(-1,~lead(,,3))%>%切片(1:(n()-3))处变异_
你可以把它变成一个函数
shift_all_but_first <- function(data, N) data %>% mutate_at(-1, ~lead(., N)) %>% slice(1:(n()-N))
shift_all_but_first(df, 3)
shift_all_但_first%mutate_位于(-1,~lead(,N))%>%slice(1:(N()-N))
除第一个外的所有换档(df,3)
谢谢。如何更改必须保持固定的列数?假设我希望a和b是固定的,只要看看mutate\u at
在选择要选择的列时有哪些选项就可以了。