У меня есть два dataframes:В R: Замена значения столбца фрейма данных по значению другого кадра данных, когда между состоянием подобран
set.seed(343)
testDF <- data.frame(Score = sample(50, size=50, replace=TRUE), number = rep(letters[1:25],2), Rev = rep(0,50))
sourceDF <- data.frame(min = c(1,10,20,30,40), max = c(9, 19, 29, 39, 50), rev = 1:5)
Для каждой строки testDF, где testDF $ оценки составляет от sourceDF $ min и sourceDF $ max источника DF, замените значение testDF $ Rev на соответствующий sourceDF $ rev.
У меня есть работа с двумя для циклов и условием if, но это ... slow (у моего набора данных есть около 1 миллиона строк). Я пробовал использовать findInterval без успеха.
Есть ли лучший/более эффективный способ сделать это?
Что такое 'письмо'? Кроме того, используйте 'set.seed' при использовании' rnorm'. Наконец, ваш пример не так хорош, потому что 'Score' никогда не будет больше, чем' 9', поэтому он никогда не упадет ни в одном ведре, кроме первого. Вместо этого я бы использовал 'sample'. –
Ваш пример не запускается. нет функции, называемой буквой. Можно найти более быстрое решение, используя() и/или применимое семейство. –
@TanDollars 'apply' семья не собирается ничего улучшать. 'который' не подходит очень хорошо здесь ни AFIK. –