データフレームがあります。行内の「準同一」の2つの値に基づいて削除する必要があります。私は違うが、同じではない観測を削除するだけです。私はagrep
を使ってこれを試みますが、この機能は同じ観測値も削除します。上記dataframe
で条件付き削除行:準同一行を削除しますが同一ではない
Id<-c("RoLu1976","Rolu1976","RoLu1976","AlBl1989","ThSa1996")
Art<-c("Econometric Policy Evaluation: A Critique","Econometric Policy Evaluations A Critique","Econometric Policy Evaluation: A Critique", "Rules after discretion", "Expectations and the Nonneutrality of Lucas")
Id.1<-c("FiKy1989","FiKy1989","BeBe1983","JoSt1989","JoSt1990")
Art.1<-c("Notes on the Lucas Critique","Notes on the Lucas Critique","The Inconsistency of Optimal Plans","The Inconsistency","Notes on the Lucas")
N<-data.frame(Id,Art,Id.1,Art.1)
準同じ値だけs
と:
ための異なる2つの第一の観察にArt
列です。私はthisだったやった
Id Art Id.1 Art.1
RoLu1976 Econometric Policy Evaluation: A Critique FiKy1989 Notes on the Lucas Critique
RoLu1976 Econometric Policy Evaluation: A Critique BeBe1983 The Inconsistency of Optimal Plans
AlBl1989 Rules after discretion JoSt1989 The Inconsistency
ThSa1996 Expectations and the Nonneutrality of Lucas JoSt1990 Notes on the Lucas
:上記の場合
最終データフレームは、(同一の値が削除されなかったことに注意)でなければなりません
yy = NULL
for(i in 1:length(N$Art)){
temp = agrep(N[i,"Art"],N$Art,value=T)
y = ifelse(any(N[i,"Art"]==temp),temp[1],N[i,"Art"])
yy = c(yy,y)
}
N$Art = yy
N.2 = N[!duplicated(N$Art), ]
しかし、それは両方を削除します値:同一かつ準同一。
どうすればいいですか?
条件を「アート」列にのみ設定してもよろしいですか?元の「N」の2行目に「Art.1」があるとします。 "Foobar"(すなわち、他の "複製物"のいずれかの "Art.1"とは異なる)。あなたはまだそれをドロップしたいですか? –
@ mathematical.coffee "Art"の列は、 "Art.1"(または他の列)でquiasi-identicalですが同一ですが、 "Art"(全く同じではない)のすべての準同一値を削除します。 「Art1」と同じです。 – Dan