2017-07-07 5 views
1

J'ai le problème suivant. Je veux sous-ensemble des données de data.frame A par les coordonnées dans la matrice B. La correspondance doit être entre les coordonnées deux à deux de data.frame A et de la matrice B, par exemple:Données de sous-ensemble par une condition paire (coordonnées) donnée par une autre matrice

 lon lat 
315 10.47 52.26 
342 10.47 52.37 
314 10.36 52.26 
341 10.36 52.37 
316 10.58 52.26 
288 10.47 52.15 
343 10.58 52.37 
287 10.36 52.15 
369 10.47 52.48 

Ce sont les coordonnées, je veux utiliser pour sélectionner les lignes, qui ont les mêmes coordonnées comme dans data.frame A.

Sous-ensemble de data.frame A:

structure(list(V13138 = c(-15.0545539855957, -15.0118608474731, 
-14.8698711395264, -14.7185792922974, -14.5449771881104, -14.3298683166504, 
-14.093412399292, -13.8265686035156, -13.5609474182129, -13.2979116439819, 
-12.9872589111328, -16.1379947662354, -16.0786437988281, -16.0000076293945, 
-15.9013233184814, -15.8254327774048, -15.7928791046143, -15.7776985168457, 
-15.7719392776489, -15.6555442810059, -15.5040102005005, -15.299674987793, 
-15.1203699111938, -14.9610414505005, -14.9183511734009, -14.8809566497803, 
-14.8522186279297, -14.7452983856201, -14.6159820556641, -14.4459781646729, 
-14.2792196273804, -14.1135988235474, -13.919620513916, -13.7100219726562, 
-13.4647169113159, -13.2096605300903, -12.9506988525391, -12.6352672576904, 
-16.0543613433838, -15.9694194793701, -15.8757200241089, -15.7634477615356, 
-15.6610631942749, -15.5705652236938, -15.4900894165039, -15.4035835266113, 
-15.2854766845703, -15.1539916992188, -15.0065212249756, -14.8876695632935, 
-14.7782440185547, -14.7028961181641, -14.6101722717285, -14.512882232666, 
-14.3619556427002, -14.2041110992432, -14.0312938690186, -13.8672027587891, 
-13.7057323455811, -13.5090990066528, -13.2931470870972, -13.0507898330688, 
-12.7776670455933, -12.495795249939, -12.1937398910522, -15.8203887939453, 
-15.7082033157349, -15.5987091064453, -15.4917774200439, -15.390435218811, 
-15.2902202606201, -15.1883487701416, -15.0730466842651, -14.9352264404297, 
-14.8101224899292, -14.6887359619141, -14.5857553482056, -14.479567527771, 
-14.3734302520752, -14.2455368041992, -14.1091232299805, -13.9528331756592, 
-13.7913122177124, -13.6249303817749), V13139 = c(-7.07704830169678, 
-7.36577892303467, -7.60899782180786, -7.85753965377808, -8.1030740737915, 
-8.29149341583252, -8.45194625854492, -8.52234935760498, -8.58086585998535, 
-8.62695598602295, -8.63118934631348, -3.46103024482727, -3.60997128486633, 
-3.75486493110657, -3.90544772148132, -4.07107162475586, -4.2713623046875, 
-4.53771257400513, -4.8378758430481, -5.18377256393433, -5.52214574813843, 
-5.85517549514771, -6.14670562744141, -6.42839002609253, -6.70926380157471, 
-6.97871208190918, -7.23635053634644, -7.43477869033813, -7.61982440948486, 
-7.77778148651123, -7.9507007598877, -8.140061378479, -8.27810287475586, 
-8.39971256256104, -8.4821662902832, -8.54337215423584, -8.59362697601318, 
-8.6127290725708, -3.92732691764832, -4.10400390625, -4.28167676925659, 
-4.4712872505188, -4.68312835693359, -4.91524791717529, -5.20708131790161, 
-5.51510334014893, -5.85246753692627, -6.17613887786865, -6.49274349212646, 
-6.75846433639526, -7.00491952896118, -7.21479940414429, -7.39973735809326, 
-7.57557010650635, -7.69487333297729, -7.81140756607056, -7.91438579559326, 
-8.01808547973633, -8.12346649169922, -8.21732807159424, -8.30572509765625, 
-8.38486099243164, -8.45881938934326, -8.52587699890137, -8.57262134552002, 
-4.34183073043823, -4.54555749893188, -4.76105737686157, -4.99724388122559, 
-5.26278305053711, -5.53893136978149, -5.85093879699707, -6.16052055358887, 
-6.46362257003784, -6.73704147338867, -6.99943161010742, -7.20827674865723, 
-7.38761377334595, -7.53203630447388, -7.64012908935547, -7.74198341369629, 
-7.82141494750977, -7.89632749557495, -7.96634721755981), V13140 = c(2.38613152503967, 
2.37324142456055, 2.38662815093994, 2.38441777229309, 2.35186982154846, 
2.31384658813477, 2.2728853225708, 2.23825240135193, 2.20144987106323, 
2.15977454185486, 2.13386940956116, 2.9677951335907, 2.92966151237488, 
2.8759753704071, 2.8214259147644, 2.76297402381897, 2.70412373542786, 
2.6543300151825, 2.61105895042419, 2.60811114311218, 2.60745763778687, 
2.60840320587158, 2.60350298881531, 2.59271574020386, 2.54244041442871, 
2.47917294502258, 2.40393853187561, 2.35462546348572, 2.31852698326111, 
2.31014728546143, 2.29225921630859, 2.26293158531189, 2.23773765563965, 
2.21094441413879, 2.18223357200623, 2.15001082420349, 2.11311554908752, 
2.08600211143494, 2.89936757087708, 2.89069938659668, 2.87734007835388, 
2.85613536834717, 2.8233802318573, 2.78204131126404, 2.73941993713379, 
2.70192885398865, 2.68653988838196, 2.66766142845154, 2.64770603179932, 
2.62153196334839, 2.5882031917572, 2.53414297103882, 2.46355938911438, 
2.38226866722107, 2.31638383865356, 2.26739454269409, 2.24680852890015, 
2.23866200447083, 2.23337078094482, 2.22489714622498, 2.21137762069702, 
2.19127559661865, 2.16362285614014, 2.13074207305908, 2.08486270904541, 
2.85043382644653, 2.87193655967712, 2.88829565048218, 2.89718008041382, 
2.88119888305664, 2.85316681861877, 2.81990385055542, 2.7852942943573, 
2.75193023681641, 2.72042202949524, 2.6889750957489, 2.650550365448, 
2.60602164268494, 2.55256152153015, 2.48241400718689, 2.40686845779419, 
2.32716631889343, 2.27034878730774, 2.23567771911621), lon = structure(c(10.36, 
10.47, 10.58, 10.69, 10.8, 10.91, 11.02, 11.13, 11.24, 11.35, 
11.46, 8.6, 8.71, 8.82, 8.93, 9.04, 9.15, 9.26, 9.37, 9.48, 9.59, 
9.7, 9.81, 9.92, 10.03, 10.14, 10.25, 10.36, 10.47, 10.58, 10.69, 
10.8, 10.91, 11.02, 11.13, 11.24, 11.35, 11.46, 8.6, 8.71, 8.82, 
8.93, 9.04, 9.15, 9.26, 9.37, 9.48, 9.59, 9.7, 9.81, 9.92, 10.03, 
10.14, 10.25, 10.36, 10.47, 10.58, 10.69, 10.8, 10.91, 11.02, 
11.13, 11.24, 11.35, 11.46, 8.6, 8.71, 8.82, 8.93, 9.04, 9.15, 
9.26, 9.37, 9.48, 9.59, 9.7, 9.81, 9.92, 10.03, 10.14, 10.25, 
10.36, 10.47, 10.58), .Dim = 84L), lat = structure(c(52.15, 52.15, 
52.15, 52.15, 52.15, 52.15, 52.15, 52.15, 52.15, 52.15, 52.15, 
52.26, 52.26, 52.26, 52.26, 52.26, 52.26, 52.26, 52.26, 52.26, 
52.26, 52.26, 52.26, 52.26, 52.26, 52.26, 52.26, 52.26, 52.26, 
52.26, 52.26, 52.26, 52.26, 52.26, 52.26, 52.26, 52.26, 52.26, 
52.37, 52.37, 52.37, 52.37, 52.37, 52.37, 52.37, 52.37, 52.37, 
52.37, 52.37, 52.37, 52.37, 52.37, 52.37, 52.37, 52.37, 52.37, 
52.37, 52.37, 52.37, 52.37, 52.37, 52.37, 52.37, 52.37, 52.37, 
52.48, 52.48, 52.48, 52.48, 52.48, 52.48, 52.48, 52.48, 52.48, 
52.48, 52.48, 52.48, 52.48, 52.48, 52.48, 52.48, 52.48, 52.48, 
52.48), .Dim = 84L)), .Names = c("V13138", "V13139", "V13140", 
"lon", "lat"), row.names = 287:370, class = "data.frame") 

Matrice B avec des coordonnées:

structure(list(lon = structure(c(10.47, 10.47, 10.36, 10.36, 
10.58, 10.47, 10.58, 10.36, 10.47), .Dim = 9L), lat = structure(c(52.26, 
52.37, 52.26, 52.37, 52.26, 52.15, 52.37, 52.15, 52.48), .Dim = 9L)), .Names = c("lon", 
"lat"), out.attrs = structure(list(dim = c(27L, 23L), dimnames = structure(list(
    Var1 = c("Var1= 8.60", "Var1= 8.71", "Var1= 8.82", "Var1= 8.93", 
    "Var1= 9.04", "Var1= 9.15", "Var1= 9.26", "Var1= 9.37", "Var1= 9.48", 
    "Var1= 9.59", "Var1= 9.70", "Var1= 9.81", "Var1= 9.92", "Var1=10.03", 
    "Var1=10.14", "Var1=10.25", "Var1=10.36", "Var1=10.47", "Var1=10.58", 
    "Var1=10.69", "Var1=10.80", "Var1=10.91", "Var1=11.02", "Var1=11.13", 
    "Var1=11.24", "Var1=11.35", "Var1=11.46"), Var2 = c("Var2=51.05", 
    "Var2=51.16", "Var2=51.27", "Var2=51.38", "Var2=51.49", "Var2=51.60", 
    "Var2=51.71", "Var2=51.82", "Var2=51.93", "Var2=52.04", "Var2=52.15", 
    "Var2=52.26", "Var2=52.37", "Var2=52.48", "Var2=52.59", "Var2=52.70", 
    "Var2=52.81", "Var2=52.92", "Var2=53.03", "Var2=53.14", "Var2=53.25", 
    "Var2=53.36", "Var2=53.47")), .Names = c("Var1", "Var2"))), .Names = c("dim", 
"dimnames")), row.names = c(315L, 342L, 314L, 341L, 316L, 288L, 
343L, 287L, 369L), class = "data.frame") 

Répondre

0

Matrice B doit avoir le même nom de colonne pour les colonnes avec le les coordonnées lon et lat sont data.frame A. Dans les données indiquées, les noms de colonnes sont lon et lat dans les deux objets:

head.matrix(data.frame.A) 

     V13138 V13139 V13140 lon lat 
287 -15.05455 -7.077048 2.386132 10.36 52.15 
288 -15.01186 -7.365779 2.373241 10.47 52.15 
289 -14.86987 -7.608998 2.386628 10.58 52.15 
290 -14.71858 -7.857540 2.384418 10.69 52.15 
291 -14.54498 -8.103074 2.351870 10.80 52.15 
292 -14.32987 -8.291493 2.313847 10.91 52.15 

matrix.B 

     lon lat 
    315 10.47 52.26 
    342 10.47 52.37 
    314 10.36 52.26 
    341 10.36 52.37 
    316 10.58 52.26 
    288 10.47 52.15 
    343 10.58 52.37 
    287 10.36 52.15 
    369 10.47 52.48 

au sous-ensemble des données de data.frame A par les coordonnées dans la matrice B , il suffit d'utiliser le code suivant:

subset.A <- merge(data.frame.A, matrix.B) 

    lon lat V13138 V13139 V13140 
1 10.36 52.15 -15.05455 -7.077048 2.386132 
2 10.36 52.26 -14.74530 -7.434779 2.354625 
3 10.36 52.37 -14.36196 -7.694873 2.316384 
4 10.47 52.15 -15.01186 -7.365779 2.373241 
5 10.47 52.26 -14.61598 -7.619824 2.318527 
6 10.47 52.37 -14.20411 -7.811408 2.267395 
7 10.47 52.48 -13.79131 -7.896327 2.270349 
8 10.58 52.26 -14.44598 -7.777781 2.310147 
9 10.58 52.37 -14.03129 -7.914386 2.246809 

C'est une solution très simple. Les colonnes avec les coordonnées seront placées dans les 2 premières colonnes du sous-ensemble.