data.tableで重複する列を削除するにはどうすればよいですか? (一つだけそれらのを維持する)data.table Rの重複する列(コンテンツ)を削除するには?
私が欲しいもの
は異なる名前を持つ列を探すことですが、同じ、私は重複したカラムに関するその他のご質問がある知っているが、彼らは単にコンテンツの重複する列名ではないかどうかを確認コンテンツ。
よろしく
data.tableで重複する列を削除するにはどうすればよいですか? (一つだけそれらのを維持する)data.table Rの重複する列(コンテンツ)を削除するには?
私が欲しいもの
は異なる名前を持つ列を探すことですが、同じ、私は重複したカラムに関するその他のご質問がある知っているが、彼らは単にコンテンツの重複する列名ではないかどうかを確認コンテンツ。
よろしく
これは機能工学の一般的なタスクです。次のコードチャンクは、まさにこの目的のために自分自身とKaggle上のコミュニティによって開発されました:
##### Removing identical features
features_pair <- combn(names(train), 2, simplify = F) # list all column pairs
toRemove <- c() # init a vector to store duplicates
for(pair in features_pair) { # put the pairs for testing into temp objects
f1 <- pair[1]
f2 <- pair[2]
if (!(f1 %in% toRemove) & !(f2 %in% toRemove)) {
if (all(train[[f1]] == train[[f2]])) { # test for duplicates
cat(f1, "and", f2, "are equals.\n")
toRemove <- c(toRemove, f2) # build the list of duplicates
}
}
}
次に、あなたはちょうどあなたがしたい重複のいずれかのコピーをドロップすることができます。デフォルトでは、私は一時オブジェクトf2
に保存されているバージョンを使用して、このようにそれらを削除します。
train <- train[,!toRemove]
私はdownvoteを説明するコメントを感謝します。これは私の最も有用で頻繁に使用されるコードチャンクの1つです。 –
私はOPの解答をあきらめていませんでしたが、あなたのコードはdata.frameや 'dat [、!duplicated( ')のために' dat [!duplicated(as.list(dat) data.table –
の場合、上記のリンクされた答え(cf. @ docendodismusのコメント)とスピード( 'data.table' ...を使用)を比較しましたか?私は比較関数をカプセル化し、 'combn()'の 'FUN'引数として使用しますが、そうでなければ良い答えです。 –
いくつかの例を示してください、この関連の答えで – akrun
ルック:http://stackoverflow.com/a/37564270の –
可能な複製を[Rの冗長列を削除](http://stackoverflow.com/questions/37564066/delete-redundant-columns-in-r) – dww