说我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)
结合使用非常高效transform
和na.omit
功能
df <- na.omit(transform(df, CCC = c(NA, CCC[-nrow(df)])))
Run Code Online (Sandbox Code Playgroud)