#r #apply
#r #применить
Вопрос:
У меня есть 2 таблицы
В первой таблице у меня есть два столбца. В первом столбце значения составляют от 1 до 2 миллионов (назовем их x). Во втором столбце у меня есть случайные числа (назовем их y).
Во второй таблице у меня есть два столбца. В первом столбце у меня одинаковые значения x, но они не варьируются от 1 до 2 миллионов, вместо этого они находятся в случайном порядке возрастания, например 222, 249, 562 .. и так далее. Во втором столбце у меня есть случайные числа (назовем их z).
Теперь я пытаюсь добавить третий столбец во вторую таблицу со значениями y из первой таблицы.Я решил использовать apply . Но вы можете использовать объединение или слияние — в зависимости от того, что более эффективно. Здесь значение x соединяет y и z.
Чтобы начать с минимальных данных, вы можете использовать этот код:
t1 <- cbind(1:20, sample(100:999, 20, TRUE))
t2 <- rbind(c(2, 4), c(6, 12), c(17, 18))
apply(t2, 1, function(...) )
Не могли бы вы помочь мне заполнить … пробелы.
Выходные данные должны иметь вид:
2 4 --
6 12 --
17 18 --
Комментарии:
1. Почему вам нужно использовать apply? Почему бы не объединить или объединить из plyr?
2. хорошо, мы также можем использовать объединение или слияние
3. Я пытаюсь выполнить это слияние(t2, t1, by = intersect(имена (x),..)
Ответ №1:
Вы можете использовать merge
для этого:
merge(as.data.frame(t2), as.data.frame(t1), by='V1')
V1 V2.x V2.y
1 2 4 751
2 6 12 298
3 17 18 218
Ответ №2:
Соответствует ли это вашим требованиям?
require(plyr)
t1 <- as.data.frame(cbind(1:20, sample(100:999, 20, TRUE)))
t2 <- as.data.frame(rbind(c(2, 4), c(6, 12), c(17, 18)))
t3 <- join(t2, t1, type = "left", by = "V1")
t3
> t3
V1 V2 V2
1 2 4 779
2 6 12 898
3 17 18 903