0
それぞれ100個以上のデータフレーム(df1, df2, df3, ....
)に同じ変数が含まれています。私はそれらのすべてをループし、複製をid
で削除したいと思います。 df1
については、次のようにしてください。複数のデータフレームの重複行を削除します
df1 <- df1[!duplicated(df1$id), ]
これを効率的に行うにはどうすればよいですか?
それぞれ100個以上のデータフレーム(df1, df2, df3, ....
)に同じ変数が含まれています。私はそれらのすべてをループし、複製をid
で削除したいと思います。 df1
については、次のようにしてください。複数のデータフレームの重複行を削除します
df1 <- df1[!duplicated(df1$id), ]
これを効率的に行うにはどうすればよいですか?
同様に構造化された100個のdata.framesを扱っているなら、それらを一意に命名する代わりに、それらをリストに入れることをお勧めします。 @MatteoCastagnaコメントで示唆されているように、
df_varnames <- ls()[ grep("^df[0-9]+$", ls()) ]
か::
df_varnames <- ls(pattern = "^df[0-9]+$")
、あなたは簡単のようなもので、リストに割り当てることができ、それらは全て
df
と数命名されていると仮定すると、
(これはより速く、よりクリーンです)。その後:
dflist <- sapply(df_varnames, get, simplify = FALSE)
そして、ここから、あなたの質問は単純です:
dflist2 <- lapply(dflist, function(z) z[!duplicated(z$id),])
いずれかを追加していないながら、個々のdata.frames(再び、落胆は、ほとんど常に処理が遅くなりますと、あなたはそれらに対処しなければならない場合機能)、あなたは)上からdf_varnames
を使用して(このようなハックを試すことができます。
for (dfname in df_varnames) {
df <- get(dfname)
assign(dfname, df[! duplicated(df$id), ])
}
私はこれを使用することを検討したとき、私はうんざり、私は、私はあなたのworkfを理解していない可能性を認めます低い。
リストに入れて、 'lapply'を使います。 [この投稿](http://stackoverflow.com/questions/17499013/how-do-i-make-a-list-of-data-frames)が役立ちます。そこに私の答えは、名前付きリストを取得する簡単な方法を提供し、gregorの優れた答えはdata.framesのリストを操作する方法を示しています。 – lmo
オブジェクト名が "df"で始まるすべてのデータフレームであれば、 'ls(pattern =" df [0-9] ")'を使用してリストを作成し、それらを繰り返したいと思うかもしれません。 –