подмножество с использованием языка R.

#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