行を1つ上の行に移動するのに問題があります。行が完全にNAになったら、それらの行をフラッシュしたいと思います(下の写真を参照)。ただし、このソリューションに対する現在のアプローチでは、2行目を維持しています。
これが私のアプローチです
data <- data.frame(gr=c(rep(1:3,each=2)),A=c(1,NA,2,NA,4,NA), B=c(NA,1,NA,3,NA,7),C=c(1,NA,4,NA,5,NA))
> data
gr A B C
1 1 1 NA 1
2 1 NA 1 NA
3 2 2 NA 4
4 2 NA 3 NA
5 3 4 NA 5
6 3 NA 7 NA
したがって、このアプローチを使用する
data.frame(apply(data,2,function(x){x[complete.cases(x)]}))
gr A B C
1 1 1 1 1
2 1 2 3 4
3 2 4 7 5
4 2 1 1 1
5 3 2 3 4
6 3 4 7 5
まだわかるように、私は各グループに2番目の行を持っています!
期待される出力
> data
gr A B C
1 1 1 1 1
2 2 2 3 4
3 3 4 7 5
ありがとう!
ごとに最大で1つの有効な値がある場合はgr
、を使用してna.omit
、そこから最初の値を取得できます。
data %>% group_by(gr) %>% summarise_all(~ na.omit(.)[1])
# [1] is optional depending on your actual data
# A tibble: 3 x 4
# gr A B C
# <int> <dbl> <dbl> <dbl>
#1 1 1 1 1
#2 2 2 3 4
#3 3 4 7 5
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加