【发布时间】:2021-01-30 07:40:12
【问题描述】:
我有一个包含点位置信息的数据框。 但是,有些位置是错误的,我不得不根据 Spatial Polygon DataFrame 选择“错误”的点。
whatever <- datu[!is.na(over(datu, as(Br_map, "SpatialPolygons"))), ]
whatever <- as.data.frame(whatever)
dput(head(whatever))
structure(list(x = c(-41.0165, -41.1205, -41.2279, -41.33, -40.2464,
-39.7644), y = c(-21.65735, -21.81825, -21.96364, -22.1201, -19.84166,
-19.43606), date = structure(c(1068120000, 1068141600, 1068163200,
1068184800, 1067515200, 1130284800), class = c("POSIXct", "POSIXt"
), tzone = "UTC"), dx = c(-0.103999999999999, -0.107399999999998,
-0.1021, -0.101500000000001, 0.241399999999999, -0.00519999999999499
), dy = c(-0.160899999999998, -0.145390000000003, -0.156459999999999,
-0.144849999999998, -0.0464899999999986, 0.00844999999999985),
dist = c(0.191584994193176, 0.180756776083223, 0.186826501332118,
0.176872192557224, 0.245835880416182, 0.00992181938960518
), dt = c(21600, 21600, 21600, 21600, 21600, 21600), R2n = c(14.0316981361,
15.5006108041, 16.94548577, 18.5156230036, 2.4491261056,
2.06461041440001), abs.angle = c(-2.14461137792491, -2.20702793453963,
-2.14897116397805, -2.18200862741257, -0.190255616242232,
2.12245130932302), rel.angle = c(0.0882296274346679, -0.0624165566147168,
0.0580567705615782, -0.0330374634345181, -3.01198140524382,
-1.43924082499018), id = structure(c(58L, 58L, 58L, 58L,
65L, 71L), .Label = c("102211.1", "10946.05", "111868.11",
"111868.16", "111868.18", "111869.11", "111869.17", "111870.17",
"111870.18", "111871.12", "112694.12", "112696.17", "112696.18",
"112702.12", "112706.18", "112712.12", "112714.12", "112717.12",
"112719.18", "112728.17", "120937.17", "120938.16", "120938.18",
"120942.17", "120942.18", "120943.17", "120947.12", "120947.17",
"121189.12", "121191.17", "121191.18", "121192.12", "121193.12",
"121195.12", "121196.12", "121203.17", "121206.17", "123226.17",
"171994.17", "171994.18", "171995.18", "171997.17", "172000.17",
"172001.17", "172002.17", "172003.17", "172004.17", "172008.18",
"194591.19", "194593.19", "194601.19", "194603.19", "20162.03",
"20687.03", "21791.03", "21792.03", "21800.03", "21809.03",
"21810.03", "24640.03", "24641.05", "24642.03", "26712.05",
"27258.05", "27259.03", "27259.05", "27259.06", "27261.03",
"27261.05", "27261.07", "33000.05", "33000.06", "33001.05",
"33001.06", "37229.05", "37229.06", "37230.06", "37231.05",
"37231.07", "37234.05", "37234.06", "37236.06", "37282.06",
"37286.07", "37288.06", "37288.07", "42521.06", "42521.07",
"42525.07", "50682.06", "50682.07", "50686.07", "50687.07",
"60004.07", "60007.07", "7617.05", "7618.05", "81122.09",
"81123.09", "81124.09", "81125.09", "81126.09", "84480.12",
"84484.17", "84484.18", "84485.17", "84485.18", "84497.1",
"87624.1", "87631.1", "87632.12", "87635.17", "87640.18",
"87759.08", "87760.08", "87761.08", "87762.08", "87763.08",
"87764.08", "87765.08", "87766.08", "87767.08", "87768.08",
"87768.11", "87769.11", "87770.08", "87771.09", "87773.08",
"87773.09", "87773.1", "87773.11", "87774.08", "87774.09",
"87774.11", "87775.08", "87775.12", "87776.08", "87776.11",
"87776.17", "87777.08", "87777.1", "87777.17", "87778.08",
"87778.1", "87780.17", "87781.1", "87783.09", "87783.11",
"88719.09", "88720.09", "88724.1", "88726.1", "88727.09",
"96380.1"), class = "factor"), burst = structure(c(58L, 58L,
58L, 58L, 65L, 71L), .Label = c("102211.1", "10946.05", "111868.11",
"111868.16", "111868.18", "111869.11", "111869.17", "111870.17",
"111870.18", "111871.12", "112694.12", "112696.17", "112696.18",
"112702.12", "112706.18", "112712.12", "112714.12", "112717.12",
"112719.18", "112728.17", "120937.17", "120938.16", "120938.18",
"120942.17", "120942.18", "120943.17", "120947.12", "120947.17",
"121189.12", "121191.17", "121191.18", "121192.12", "121193.12",
"121195.12", "121196.12", "121203.17", "121206.17", "123226.17",
"171994.17", "171994.18", "171995.18", "171997.17", "172000.17",
"172001.17", "172002.17", "172003.17", "172004.17", "172008.18",
"194591.19", "194593.19", "194601.19", "194603.19", "20162.03",
"20687.03", "21791.03", "21792.03", "21800.03", "21809.03",
"21810.03", "24640.03", "24641.05", "24642.03", "26712.05",
"27258.05", "27259.03", "27259.05", "27259.06", "27261.03",
"27261.05", "27261.07", "33000.05", "33000.06", "33001.05",
"33001.06", "37229.05", "37229.06", "37230.06", "37231.05",
"37231.07", "37234.05", "37234.06", "37236.06", "37282.06",
"37286.07", "37288.06", "37288.07", "42521.06", "42521.07",
"42525.07", "50682.06", "50682.07", "50686.07", "50687.07",
"60004.07", "60007.07", "7617.05", "7618.05", "81122.09",
"81123.09", "81124.09", "81125.09", "81126.09", "84480.12",
"84484.17", "84484.18", "84485.17", "84485.18", "84497.1",
"87624.1", "87631.1", "87632.12", "87635.17", "87640.18",
"87759.08", "87760.08", "87761.08", "87762.08", "87763.08",
"87764.08", "87765.08", "87766.08", "87767.08", "87768.08",
"87768.11", "87769.11", "87770.08", "87771.09", "87773.08",
"87773.09", "87773.1", "87773.11", "87774.08", "87774.09",
"87774.11", "87775.08", "87775.12", "87776.08", "87776.11",
"87776.17", "87777.08", "87777.1", "87777.17", "87778.08",
"87778.1", "87780.17", "87781.1", "87783.09", "87783.11",
"88719.09", "88720.09", "88724.1", "88726.1", "88727.09",
"96380.1"), class = "factor"), ID = structure(c(9L, 9L, 9L,
9L, 16L, 22L), .Label = c("7617.05", "7618.05", "10946.05",
"20162.03", "20687.03", "21791.03", "21792.03", "21800.03",
"21809.03", "21810.03", "24640.03", "24641.05", "24642.03",
"26712.05", "27258.05", "27259.03", "27259.05", "27259.06",
"27261.03", "27261.05", "27261.07", "33000.05", "33000.06",
"33001.05", "33001.06", "37229.05", "37229.06", "37230.06",
"37231.05", "37231.07", "37234.05", "37234.06", "37236.06",
"37282.06", "37286.07", "37288.06", "37288.07", "42521.06",
"42521.07", "42525.07", "50682.06", "50682.07", "50686.07",
"50687.07", "60004.07", "60007.07", "81122.09", "81123.09",
"81124.09", "81125.09", "81126.09", "84480.12", "84484.17",
"84484.18", "84485.17", "84485.18", "84497.1", "87624.1",
"87631.1", "87632.12", "87635.17", "87640.18", "87759.08",
"87760.08", "87761.08", "87762.08", "87763.08", "87764.08",
"87765.08", "87766.08", "87767.08", "87768.08", "87768.11",
"87769.11", "87770.08", "87771.09", "87773.08", "87773.09",
"87773.1", "87773.11", "87774.08", "87774.09", "87774.11",
"87775.08", "87775.12", "87776.08", "87776.11", "87776.17",
"87777.08", "87777.1", "87777.17", "87778.08", "87778.1",
"87780.17", "87781.1", "87783.09", "87783.11", "88719.09",
"88720.09", "88724.1", "88726.1", "88727.09", "96380.1",
"102211.1", "111868.11", "111868.16", "111868.18", "111869.11",
"111869.17", "111870.17", "111870.18", "111871.12", "112694.12",
"112696.17", "112696.18", "112702.12", "112706.18", "112712.12",
"112714.12", "112717.12", "112719.18", "112728.17", "120937.17",
"120938.16", "120938.18", "120942.17", "120942.18", "120943.17",
"120947.12", "120947.17", "121189.12", "121191.17", "121191.18",
"121192.12", "121193.12", "121195.12", "121196.12", "121203.17",
"121206.17", "123226.17", "171994.17", "171994.18", "171995.18",
"171997.17", "172000.17", "172001.17", "172002.17", "172003.17",
"172004.17", "172008.18", "194591.19", "194593.19", "194601.19",
"194603.19"), class = "factor"), date.sec = c(-62045784000,
-62045762400, -62045740800, -62045719200, -62046388800, -61983619200
), lon.025 = c(-42, -42, -42.1, -42.1, -40.6, -42.6), lat.025 = c(-22.85025,
-22.9305, -23.04025, -23.01, -20.10025, -20.8005), lon.5 = c(-41,
-41.1, -41.3, -41.3, -40.25, -39.55), lat.5 = c(-21.65, -21.825,
-21.97, -22.16, -19.84, -19.46), lon.975 = c(-40, -40.2,
-40.3, -40.5, -39.8, -37.6), lat.975 = c(-20.529, -20.72975,
-20.81, -20.92, -19.6, -18.1095), bmode = c(1.724, 1.707,
1.71, 1.723, 1.887, 1.751), bmode.5 = c(2, 2, 2, 2, 2, 2),
timestamp = structure(c(1068120000, 1068141600, 1068163200,
1068184800, 1067515200, 1130284800), class = c("POSIXct",
"POSIXt"), tzone = "UTC"), sex = structure(c(1L, 1L, 1L,
1L, 1L, 1L), .Label = c("F", "I", "M"), class = "factor"),
P.social = structure(c(3L, 3L, 3L, 3L, 3L, 3L), .Label = c("AD",
"ES", "MO"), class = "factor"), ang.re.graus = c(5.05518528001813,
-3.57620526576263, 3.32640792533779, -1.89290722061567, -172.573822492354,
-82.4624249748642)), row.names = c("13328", "13329", "13330",
"13331", "15206", "15743"), class = "data.frame")
现在,我想从我的一般数据框中排除这些特定行,因为我不会在分析中使用这些位置。
但我现在不知道如何从我的常规数据帧 (mov.traj.df) 中删除这个用错误行生成的新数据帧。
dput(head(mov.traj.df))
structure(list(date = structure(c(1128988800, 1129010400, 1129032000,
1129053600, 1129075200, 1129096800), class = c("POSIXct", "POSIXt"
), tzone = "UTC"), dx = c(0.0139999999999958, -0.0291999999999959,
0.0721999999999952, 0.0581999999999994, 0.0800000000000054, 0.0578999999999965
), dy = c(0.00260000000000105, 0.00922999999999874, -0.0559499999999993,
-0.0113599999999998, -0.0439700000000016, -0.0488299999999988
), dist = c(0.0142393820090581, 0.0306240575365143, 0.0913413515336795,
0.0592983102626029, 0.09128724390626, 0.075741526918854), dt = c(21600,
21600, 21600, 21600, 21600, 21600), R2n = c(0, 0.000202759999999888,
0.000370988899999998, 0.00519557439999939, 0.0163490703999986,
0.0479933425000001), abs.angle = c(0.183622326169406, 2.83543517587926,
-0.659266801234295, -0.192765350843411, -0.502555257469087, -0.700621058473181
), rel.angle = c(NA, 2.65181284970985, 2.78848333006603, 0.466501450390883,
-0.309789906625676, -0.198065801004094), id = structure(c(96L,
96L, 96L, 96L, 96L, 96L), .Label = c("102211.1", "10946.05",
"111868.11", "111868.16", "111868.18", "111869.11", "111869.17",
"111870.17", "111870.18", "111871.12", "112694.12", "112696.17",
"112696.18", "112702.12", "112706.18", "112712.12", "112714.12",
"112717.12", "112719.18", "112728.17", "120937.17", "120938.16",
"120938.18", "120942.17", "120942.18", "120943.17", "120947.12",
"120947.17", "121189.12", "121191.17", "121191.18", "121192.12",
"121193.12", "121195.12", "121196.12", "121203.17", "121206.17",
"123226.17", "171994.17", "171994.18", "171995.18", "171997.17",
"172000.17", "172001.17", "172002.17", "172003.17", "172004.17",
"172008.18", "194591.19", "194593.19", "194601.19", "194603.19",
"20162.03", "20687.03", "21791.03", "21792.03", "21800.03", "21809.03",
"21810.03", "24640.03", "24641.05", "24642.03", "26712.05", "27258.05",
"27259.03", "27259.05", "27259.06", "27261.03", "27261.05", "27261.07",
"33000.05", "33000.06", "33001.05", "33001.06", "37229.05", "37229.06",
"37230.06", "37231.05", "37231.07", "37234.05", "37234.06", "37236.06",
"37282.06", "37286.07", "37288.06", "37288.07", "42521.06", "42521.07",
"42525.07", "50682.06", "50682.07", "50686.07", "50687.07", "60004.07",
"60007.07", "7617.05", "7618.05", "81122.09", "81123.09", "81124.09",
"81125.09", "81126.09", "84480.12", "84484.17", "84484.18", "84485.17",
"84485.18", "84497.1", "87624.1", "87631.1", "87632.12", "87635.17",
"87640.18", "87759.08", "87760.08", "87761.08", "87762.08", "87763.08",
"87764.08", "87765.08", "87766.08", "87767.08", "87768.08", "87768.11",
"87769.11", "87770.08", "87771.09", "87773.08", "87773.09", "87773.1",
"87773.11", "87774.08", "87774.09", "87774.11", "87775.08", "87775.12",
"87776.08", "87776.11", "87776.17", "87777.08", "87777.1", "87777.17",
"87778.08", "87778.1", "87780.17", "87781.1", "87783.09", "87783.11",
"88719.09", "88720.09", "88724.1", "88726.1", "88727.09", "96380.1"
), class = "factor"), burst = structure(c(96L, 96L, 96L, 96L,
96L, 96L), .Label = c("102211.1", "10946.05", "111868.11", "111868.16",
"111868.18", "111869.11", "111869.17", "111870.17", "111870.18",
"111871.12", "112694.12", "112696.17", "112696.18", "112702.12",
"112706.18", "112712.12", "112714.12", "112717.12", "112719.18",
"112728.17", "120937.17", "120938.16", "120938.18", "120942.17",
"120942.18", "120943.17", "120947.12", "120947.17", "121189.12",
"121191.17", "121191.18", "121192.12", "121193.12", "121195.12",
"121196.12", "121203.17", "121206.17", "123226.17", "171994.17",
"171994.18", "171995.18", "171997.17", "172000.17", "172001.17",
"172002.17", "172003.17", "172004.17", "172008.18", "194591.19",
"194593.19", "194601.19", "194603.19", "20162.03", "20687.03",
"21791.03", "21792.03", "21800.03", "21809.03", "21810.03", "24640.03",
"24641.05", "24642.03", "26712.05", "27258.05", "27259.03", "27259.05",
"27259.06", "27261.03", "27261.05", "27261.07", "33000.05", "33000.06",
"33001.05", "33001.06", "37229.05", "37229.06", "37230.06", "37231.05",
"37231.07", "37234.05", "37234.06", "37236.06", "37282.06", "37286.07",
"37288.06", "37288.07", "42521.06", "42521.07", "42525.07", "50682.06",
"50682.07", "50686.07", "50687.07", "60004.07", "60007.07", "7617.05",
"7618.05", "81122.09", "81123.09", "81124.09", "81125.09", "81126.09",
"84480.12", "84484.17", "84484.18", "84485.17", "84485.18", "84497.1",
"87624.1", "87631.1", "87632.12", "87635.17", "87640.18", "87759.08",
"87760.08", "87761.08", "87762.08", "87763.08", "87764.08", "87765.08",
"87766.08", "87767.08", "87768.08", "87768.11", "87769.11", "87770.08",
"87771.09", "87773.08", "87773.09", "87773.1", "87773.11", "87774.08",
"87774.09", "87774.11", "87775.08", "87775.12", "87776.08", "87776.11",
"87776.17", "87777.08", "87777.1", "87777.17", "87778.08", "87778.1",
"87780.17", "87781.1", "87783.09", "87783.11", "88719.09", "88720.09",
"88724.1", "88726.1", "88727.09", "96380.1"), class = "factor"),
ID = structure(c(1L, 1L, 1L, 1L, 1L, 1L), .Label = c("7617.05",
"7618.05", "10946.05", "20162.03", "20687.03", "21791.03",
"21792.03", "21800.03", "21809.03", "21810.03", "24640.03",
"24641.05", "24642.03", "26712.05", "27258.05", "27259.03",
"27259.05", "27259.06", "27261.03", "27261.05", "27261.07",
"33000.05", "33000.06", "33001.05", "33001.06", "37229.05",
"37229.06", "37230.06", "37231.05", "37231.07", "37234.05",
"37234.06", "37236.06", "37282.06", "37286.07", "37288.06",
"37288.07", "42521.06", "42521.07", "42525.07", "50682.06",
"50682.07", "50686.07", "50687.07", "60004.07", "60007.07",
"81122.09", "81123.09", "81124.09", "81125.09", "81126.09",
"84480.12", "84484.17", "84484.18", "84485.17", "84485.18",
"84497.1", "87624.1", "87631.1", "87632.12", "87635.17",
"87640.18", "87759.08", "87760.08", "87761.08", "87762.08",
"87763.08", "87764.08", "87765.08", "87766.08", "87767.08",
"87768.08", "87768.11", "87769.11", "87770.08", "87771.09",
"87773.08", "87773.09", "87773.1", "87773.11", "87774.08",
"87774.09", "87774.11", "87775.08", "87775.12", "87776.08",
"87776.11", "87776.17", "87777.08", "87777.1", "87777.17",
"87778.08", "87778.1", "87780.17", "87781.1", "87783.09",
"87783.11", "88719.09", "88720.09", "88724.1", "88726.1",
"88727.09", "96380.1", "102211.1", "111868.11", "111868.16",
"111868.18", "111869.11", "111869.17", "111870.17", "111870.18",
"111871.12", "112694.12", "112696.17", "112696.18", "112702.12",
"112706.18", "112712.12", "112714.12", "112717.12", "112719.18",
"112728.17", "120937.17", "120938.16", "120938.18", "120942.17",
"120942.18", "120943.17", "120947.12", "120947.17", "121189.12",
"121191.17", "121191.18", "121192.12", "121193.12", "121195.12",
"121196.12", "121203.17", "121206.17", "123226.17", "171994.17",
"171994.18", "171995.18", "171997.17", "172000.17", "172001.17",
"172002.17", "172003.17", "172004.17", "172008.18", "194591.19",
"194593.19", "194601.19", "194603.19"), class = "factor"),
date.sec = c(-61984915200, -61984893600, -61984872000, -61984850400,
-61984828800, -61984807200), lon.025 = c(-39.8, -39.6025,
-39.2, -39.6, -39.7, -39.7), lat.025 = c(-18.62, -18.6, -18.13,
-18.67, -18.871, -18.9905), lon.5 = c(-39, -39, -39.1, -39,
-38.9, -38.9), lat.5 = c(-18.02, -18.03, -18.01, -18.06,
-18.08, -18.12), lon.975 = c(-38.4, -38.4, -38.9, -38.4,
-38.2, -37.9975), lat.975 = c(-17.39, -17.39, -17.91, -17.45,
-17.35, -17.26975), bmode = c(1.535, 1.844, 1.849, 1.871,
1.894, 1.892), bmode.5 = c(2, 2, 2, 2, 2, 2), timestamp = structure(c(1128988800,
1129010400, 1129032000, 1129053600, 1129075200, 1129096800
), class = c("POSIXct", "POSIXt"), tzone = "UTC"), sex = structure(c(1L,
1L, 1L, 1L, 1L, 1L), .Label = c("F", "I", "M"), class = "factor"),
P.social = structure(c(3L, 3L, 3L, 3L, 3L, 3L), .Label = c("AD",
"ES", "MO"), class = "factor"), ang.re.graus = c(NA, 151.937684346934,
159.768326055369, 26.7285642441292, -17.7496541854031, -11.3483344634126
)), row.names = c("17461", "17462", "17463", "17464", "17465",
"17466"), class = "data.frame")
这个问题看起来很简单,但我找不到答案。
【问题讨论】:
-
从您的问题中不清楚/对我来说很明显您如何在数据框中识别出那些“错误”的行。这些行是否在某个变量中标识?您只是说您想排除出现在第二个数据框中的
whatever的观察结果吗?但我没有看到第二个数据框包含与第一个匹配的任何观察结果。 -
如果您为您的案例提供简单的示例和预期的输出会更好。
-
一般来说,您可以使用
tidyverse中的anti_join函数从df1中删除df2和anti_join(df1, df2)的行。问题是,您的数据框的结构不同,您的第二个数据框似乎也不包含任何要从whatever删除的重复项。 -
成功了! @StatsStudent。谢谢!!!
-
既然这似乎可行,我会将此作为官方答案@AnneElise。
标签: r dataframe row delete-row