Я работаю с двумя различными кадрами данных. В первом случае у меня есть имена строк географических центроидов (точек) и имена идентификаторов колонок другого набора точек (вокзалы). Значения представляют собой расстояние между центроидами и точками в столбце (извлекается gDistance).Извлечь значения из фрейма данных, в соответствии с именами столбцов, полученными из второго фрейма данных.
С этого момента я извлек 3 ближайших точки, сохраняя их идентификаторы в переводе фрейма данных. У этого теперь есть строки с идентификаторами центроидов и как столбцы только ранга (1,2,3).
distances<- ft2miles(gDistance(stations, centroids, byid=TRUE))
access <-as.data.frame(apply(distances, 1, function(X) colnames(distances)[order(X)][1:3]))
access <- as.data.frame(t(access))
Я хотел бы добавить к последнему кадру данных три столбца с соответствующими значениями расстояния. Чтобы быть более ясным, столбцы кадра данных расстояний соответствуют значениям второго, имена строк идентичны.
Первый кадр данных:
158 1559 1560 1561 1722 1723 1732 166516384 1546
croatia_new.0 1.108585 0.9434521 1.138825 1.621118 0.8457217 0.5554764 2.441048 0.7393321 6.4736425
croatia_new.1 1.107511 1.3381573 2.970976 3.448820 2.6142722 2.0175318 4.167618 1.6984548 6.2927608
Второй кадр данных:
closest1 closest2 closest3
croatia_new.0 1723 166516384 1722
croatia_new.1 158 1559 166516384
croatia_new.2 1546 1584 98349400
croatia_new.3 1584 1546 98349400
Значения этого фрейма данных, по существу, имена столбцов первого кадра данных, указывающий идентификатор из ближайших станций , То, что я хочу получить:
closest1 closest2 closest3
croatia_new.0 0.5554764 0.739332 0.8457217
croatia_new.1 1.107511 1.3381573 1.6984548
croatia_new.N .... .... ....
выход, полученный с использованием раствора DigEmAll
V1 V2 V3
croatia_new.0 3.719507 NA NA
croatia_new.1 63.082290 38.04791 36.94511
croatia_new.2 NA NA 49.05636
croatia_new.3 55.836949 47.74032 46.48799
croatia_new.4 41.484741 NA 52.85941
croatia_new.5 60.654512 NA 49.68948
Консоль вывода:
> dput(distances["croatia_new.2",1:10])
structure(list(`158` = 6.99119002871976, `1559` = 7.05366412218041,
`1560` = 6.99165462844427, `1561` = 6.79651949339854, `1722` = 7.09268368796389,
`1723` = 7.06552376797322, `1732` = 6.3722523477356, `166516384` = 7.1279696005328,
`1546` = 0.153911810037831, `1584` = 0.433837036180278), .Names = c("158",
"1559", "1560", "1561", "1722", "1723", "1732", "166516384",
"1546", "1584"), row.names = "croatia_new.2", class = "data.frame")
dput(access["croatia_new.2",])
structure(list(V1 = structure(149L, .Names = "croatia_new.2", .Label = c("1001",
"1002", "1003", "1004", "1005", "1006", "1007", "1018", "1019",
"1020", "1023", "1024", "1025", "1031", "1038", "1042", "1045",
"1046", "1047", "1048", "1050", "1052", "1053", "1054", "1056",
"105753770", "1059", "1061", "1062", "1064", "1065", "1067",
"1073", "1076", "1085", "1088", "109", "1091", "1093", "1095", ....."999"), class = "factor")), .Names = c("V1",
"V2", "V3"), row.names = "croatia_new.2", class = "data.frame")
Пожалуйста, представьте [минимальный воспроизводимый пример] (http://stackoverflow.com/questions/5963269/how-to-make-a -great-r-reproducible-example) – digEmAll
Надеюсь, теперь стало яснее –
Итак, вы хотите объединить 2 data.frame, правда? Попробуйте 'merge (DF1, DF2, by =" StationNameColumn ")' – digEmAll