ほぼ同じ2行のコードで複製の動作が異なるという問題があります。dfは次のようになります。
odonata = data.frame(H = c(2019071600, 2019071600, 2019071600, 2019071601, 2019071602), name = c(null, odonata, null, null, odonata)
# H name
# 2019071600 null
# 2019071600 odonata
# 2019071600 null
# 2019071601 null
# 2019071602 odonata
この行を使用する場合:
odonata = odonata[which(!duplicated(odonata$copydate)),]
出力は次のようになります。
# H name
# 2019071600 null
# 2019071600 null
# 2019071601 null
しかし、このdfで同じコードを使用すると、次のようになります。
araneae = data.frame(H = c(2019071600, 2019071600, 2019071600, 2019071601, 2019071602), name = c(null, araneae, null, null, araneae)
# H name
# 2019071600 null
# 2019071600 araneae
# 2019071600 null
# 2019071601 null
# 2019071602 araneae
araneae= araneae[which(!duplicated(araneae$copydate)),]
出力は次のようになります。
# H name
# 2019071600 araneae
# 2019071601 null
# 2019071602 araneae
さて、私はそれをクモの出力のようにしたいと思います(これらの2つの例以上)。トンボdfとそれに続くもの(アルファベット順)には、この問題があるようです。問題は、アルファベット順に自動的に並べ替えた後、結果として最も重複しているものが選択されることだと思いました。私が試してみました:
しかし、私が試したすべてがそれを悪化させました。私が得た最も近いものは、name = "null" AND name = "odonata"が存在する場合に重複Hのみを持つことでしたが、重複Hは明らかにしたくないので、重複HからすべてのHのトンボを選択する必要があります。トンボ。
情報が十分であることを願っています、TIA!
私はあなたが含めたいものの論理を完全には理解していませんが、複製は次のように機能します:
X = c("a","a","b")
duplicated(X)
[1] FALSE TRUE FALSE
2回目に来るものはすべて、重複していると見なされます。したがって、data.frameでそれを行う場合、それはにのみ依存しますcopydate
2番目の列に特定の設定がある場合は、最初にdata.frameを並べ替えます。
araneae = data.frame(H = c(2019071600, 2019071600, 2019071600, 2019071601, 2019071602), name = c("null", "araneae","null","null","araneae"))
araneae = araneae[order(araneae$H,araneae$name),]
araneae[!duplicated(araneae$H),]
H name
2 2019071600 araneae
4 2019071601 null
5 2019071602 araneae
araneaeの前に、nullを選択したい場合は、次のようにします。
araneae$name = factor(araneae$name,levels=c("null","araneae"))
araneae = araneae[order(araneae$H,araneae$name),]
araneae[!duplicated(araneae$H),]
H name
1 2019071600 null
4 2019071601 null
5 2019071602 araneae
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加