【问题标题】:Exclude specific information from a dataframe从数据框中排除特定信息
【发布时间】: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 中删除df2anti_join(df1, df2) 的行。问题是,您的数据框的结构不同,您的第二个数据框似乎也不包含任何要从 whatever 删除的重复项。
  • 成功了! @StatsStudent。谢谢!!!
  • 既然这似乎可行,我会将此作为官方答案@AnneElise。

标签: r dataframe row delete-row


【解决方案1】:

一般来说,您可以使用tidyverse 包中的anti_join 函数从df1 中删除df2anti_join(df1, df2) 的行。问题是,您的数据框的结构不同,您的第二个数据框似乎也不包含任何要从 whatever 删除的重复项。

【讨论】:

    猜你喜欢
    • 2020-10-30
    • 2017-02-17
    • 2018-04-24
    • 1970-01-01
    • 2020-02-02
    • 2017-08-17
    • 2011-10-30
    • 1970-01-01
    • 2022-12-17
    相关资源
    最近更新 更多