Каков наиболее эффективный способ извлечения переменных из кадра данных? - PullRequest
0 голосов
/ 08 мая 2019

У меня есть два фрейма данных: df1 и df2. df1 предоставляет ранг для всех целых чисел в последовательности, заданных начальных и конечных координат, для данной категории. Например:

set.seed(1)

df1 <- data.frame(CAT = c(rep(1, 1000000), rep(2, 1000000), rep(3, 1000000)),
              START = c(seq(1, 10000000, 10), seq(1, 10000000, 10), seq(1, 10000000, 10)),
              END = c(seq(10, 10000000, 10), seq(10, 10000000, 10), seq(10, 10000000, 10)),
              RANK = sample(1:100, 3000000, replace = T))

df2 предоставляет список целых чисел и их категорий. Например:

df2 <- data.frame(CAT = sample(1:3, 100, replace = T),
              INT = sample(1:15000000, 100))

Я пытаюсь определить RANK для каждого INT в df2. Я могу заставить цикл работать:

system.time({ 

out <- rep(NA, nrow(df2))
for (i in 1:nrow(df2)){
  x <- subset(df1, df1$CAT == df2$CAT[i] &
            df1$START <= df2$INT[i] & 
            df1$END >= df2$INT[i])
  if (nrow(x) != 0){ out[i] <- x$RANK[1] }
  print(i)
}

})

Однако это слишком медленно для набора данных, к которому мне нужно применить его. Кто-нибудь может предложить альтернативный метод с большей производительностью?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...