私には奇妙な問題があります。私には良い解決策を見つけることができませんでした。基本的に、私たちのシステムは人のための得点、を通常として出力します。しかし、システムに2回目に入ってスコアを入力することもあります。また、必要に応じてすべての行を塗りつぶすこともあります。データベースの修正は理想的ですが、それは起こらないでしょう(管理のおかげ)。私たちはまた、理由のために複製されているので、重複ID値を取り除くこともできません。私がする必要があるのは、すべての一致するID値に対してNAを持つフィールドにスコアをコピーすることです。だから、ここのデータ例である:出力は同じデータフレーム内の一致するID値を持つ行を上書きする
ID VAR1 VAR2 VAR3 VAR4 VAR5
1 16 15 14 15 46
1 16 15 14 15 46
2 15 12 11 14 12
3 14 12 12 15 22
3 14 12 12 15 22
4 11 04 12 33 12
4 11 04 12 33 12
6 NA NA NA NA NA
ようになり
ID VAR1 VAR2 VAR3 VAR4 VAR5
1 16 15 14 15 46
1 NA NA NA NA NA
2 15 12 11 14 12
3 14 12 12 15 22
3 14 12 12 15 22
4 NA NA NA NA NA
4 11 04 12 33 12
6 NA NA NA NA NA
私は私の机にそれを移動するために、この問題のために働いて何かを得るために管理しますが、この問題が起こっています私はより良い解決策を望んでいます。私のソリューションは、次のとおりです。
df_2 <- list()
for(i in df$ID){
filter(df, ID == i) %>%
mutate(VAR1 = mean(VAR1, na.rm = TRUE),
VAR2 = mean(VAR2, na.rm = TRUE),
VAR3 = mean(VAR3, na.rm = TRUE),
VAR4 = mean(VAR4, na.rm = TRUE),
VAR5 = mean(VAR5, na.rm = TRUE))
} -> df_2[[i]]
# Then we bind this together as a dataframe
bind_rows(df_2) -> df_replaced
# Remove the list object as it's huge
rm(df_2)
これは動作しますが、それはおよそ千年かかると4回のギグ(df_2)の周りに一時的なリストを作成します。だから私はシステムを完全に停止させるので、できるだけ早く削除する必要があるのです。一致するものがあるように感じますが、NA行をコピーするデータ行を選択する方法が本当にわかりません。
EDIT:固定表の書式設定。