将一列向下移动一列

B. *_*vis 10 r dataframe

说我data.frame看起来像这样

 df <- data.frame(AAA = rep(c(NA,sample(1:10, 1)),5),
  BBB = rep(c(NA,sample(1:10, 1)),5),
  CCC = rep(c(sample(1:10, 1),NA),5))

> df 
   AAA BBB CCC
1   NA  NA  10
2    3   7  NA
3   NA  NA  10
4    3   7  NA
5   NA  NA  10
6    3   7  NA
7   NA  NA  10
8    3   7  NA
9   NA  NA  10
10   3   7  NA
Run Code Online (Sandbox Code Playgroud)

我想将列CCC向下移动一个,以便所有数字在一行中对齐,然后删除不包含数据的行(通常每隔一行 - 但不总是 - 模式可能会因此而变化data.frame.

akr*_*run 16

运用 dplyr

library(dplyr)
df %>%
mutate(CCC=lag(CCC)) %>%
na.omit()
Run Code Online (Sandbox Code Playgroud)

或使用 data.table

library(data.table)
na.omit(setDT(df)[, CCC:=c(NA, CCC[-.N])])
Run Code Online (Sandbox Code Playgroud)


Dav*_*urg 7

结合使用非常高效transformna.omit功能

df <- na.omit(transform(df, CCC = c(NA, CCC[-nrow(df)])))
Run Code Online (Sandbox Code Playgroud)