0

次のデータフレームがあり、「両方」ではない「出力」のすべての行を返したいと思います。 setdiffトリックをしていないようです。この例では、7行が返される新しいデータフレームが必要になります。これどうやってするの?

私の問題の一部は、「両方」を計算することである可能性があります。これは、末尾の0を切り捨てることがあります。「出力」は別のデータフレームです。「both」には、「ingress」と「egress」の両方のデータフレームにある行が含まれています。

両方=merge(ingress、egress、by = c( "lat"、 "lng")

出口

       lat lng
1 13.833344.6833
2 31.1429 -81.4710
3 37.4020 -122.0780(一致)
4 33.9553 -83.3937
5 33.9553 -83.3937
6 38.9628 -95.2554
7 18.9667 72.8333
8 38.8147 -77.0647
9 32.5670 -84.9870(一致)
10 30.5670 -85.9870(一致)

イングレス

      lat lng
1 38.8787 -77.1019
2 52.2500 21.0000
3 37.4020 -122.0780
4 40.7811 -74.0648
5 32.5670 -84.9870
6 30.5670 -85.9870

両方とも

     lat lng
1 30.567 -85.987(末尾の0は切り捨てられます)
2 32.567 -84.987(末尾の0は切り捨てられます)
3 37.402 -122.078(末尾の0は切り捨てられます)
4

2 に答える 2

3

これが私がおそらくすることです。(data.frameの1つだけに末尾のゼロが含まれることがあるという懸念がある場合は、最初sprintf()に2つのdata.frameのフォーマットを同じにするようなものを使用することをお勧めします。)

A <- apply(egress, 1, paste, collapse="_")
B <- apply(ingress, 1, paste, collapse="_")
egress[! A %in% B, ]
#       lat      lng
# 1 13.8333  44.6833
# 2 31.1429 -81.4710
# 4 33.9553 -83.3937
# 5 33.9553 -83.3937
# 6 38.9628 -95.2554
# 7 18.9667  72.8333
# 8 38.8147 -77.0647
于 2012-04-18T21:16:50.540 に答える
1

ingress後でサブセット化するために、ダミー変数をオンに設定できます。

ingress$both <- 1
not_both <- merge(egress, ingress, by=c("lat","lng"), all.x = T)
not_both <- subset(not_both, is.na(both))
于 2012-04-18T21:35:05.557 に答える