У меня есть два кадра данных. df1
состоит из среднего размера параметра для отдельных пользователей. df2
содержит среднесуточное значение для одного и того же параметра для пользователей.Сравнение двух фреймов данных на основе условия
Я хочу, чтобы подсчитать количество дней для событий, где df2$size > df1$size
для каждогоuser
.
df1 = read.table(text='user size
AAL0706 29000
AAN0823 25000
AAV0450 30000', stringsAsFactors=FALSE, header=TRUE)
df2 = read.table(text='Date user size
2010-01-04 AAL0706 31054
2010-01-06 AAL0706 20703
2010-01-08 AAL0706 39968
2010-01-04 AAN0823 17892
2010-01-06 AAN0823 37839
2010-01-08 AAN0823 19649
2010-01-04 AAV0450 35432
2010-01-06 AAV0450 37839', stringsAsFactors=FALSE, header=TRUE)
Ожидаемый результат:
user count
AAL0706 2
AAN0823 1
AAV0450 2
Я попытался использовать следующую команду, чтобы вычислить мои результаты, но я понимаю, что-то не так.
lapply(df1, function(y) {
ddply(df2$size, .(user), function(x) {
return(length(y$size(y$size > x$size))
})
})
Не могли бы вы посоветовать мне эффективный способ сделать это?
Использование библиотеки «dplyr» было полезно для меня в замене большей части работы, которую я делал на функцию «aggregate». Я занимался проблемами памяти с «совокупной» функцией при обработке больших наборов данных. Я считаю, что пакет «dplyr» был хорошей альтернативой моей проблеме – Anna