2017-10-27 13 views
1

私は類似の質問を見ませんでした。 行の重複を削除し、代わりにNAsを挿入したいと考えています。 [OK]を、簡単な例、のは、DFを作成してみましょう:行の重複を削除し、NAsを挿入します

v1 <- c('A','D','F') 
v2 <- c('A','D','G') 
v3 <- c('B','E','F') 
v4 <- c('C', NA, NA) 
df <- data.frame(v1,v2,v3,v4) 

> df 
    v1 v2 v3 v4 
1 A A B C 
2 D D E <NA> 
3 F G F <NA> 

望ましい結果:

> df 
    v1 v2 v3  v4 
1 A B C <NA> 
2 D E <NA> <NA> 
3 F G <NA> <NA> 

[OK]を、私はその後、DF unique()から各行を抽出する、ことによってこの問題を解決しようとしたし、その後に戻しますdf。ここでは1行の例を示しますが、utは機能しません。もしそうなら、私は各行にいくつか適用します。

答えて

3
df[1,] <- unique(as.character(unlist(df[1,]))) 

我々は、行をループにMARGIN=1applyを使用NAreplaceduplicated要素、連結(c)「NA」要素と、非NA要素、転置(t)データセットと変換することができ〜data.frame

as.data.frame(t(apply(df, 1, function(x) { 
     x1 <- replace(x, duplicated(x), NA) 
     c(x1[!is.na(x1)], x1[is.na(x1)])}))) 
# V1 V2 V3 V4 
#1 A B C <NA> 
#2 D E <NA> <NA> 
#3 F G <NA> <NA> 
+1

はい、本当にうまくいく、説明をありがとう – Adamm

関連する問題