Только выбор случаев для всех периодов времени - PullRequest
4 голосов
/ 08 февраля 2011

У меня есть набор продольных данных за месяц, в котором есть некоторое истощение пользователя.

Я бы хотел разместить данные только для тех пользователей, которые активны в течение всех 30 дней , но я не смог найти пример этого типа подмножества. Вот пример расположения данных:

date          userID       x
2001-11-08    1            20
2001-11-08    2            2
2001-11-08    3            10
2001-11-08    4            5
2001-11-08    5            1
2001-11-09    1            19
2001-11-09    3            4
2001-11-09    4            5
...
2001-11-30    1            15

Ответы [ 4 ]

2 голосов
/ 08 февраля 2011

Вам следует рассмотреть возможность использования инструментов обработки данных в библиотеке plyr.

library(plyr)

startdate <- ISOdate(2011, 1, 1)
userdata <- data.frame(
        date = startdate + rep(1:31, each=3),
        userID = 1 + round(9*runif(93)),
        x = round(100*runif(93))
)

summary <- ddply(userdata, .(userID), summarize, activedays=length(date))
summary[summary$activedays >= 30, ]

Подробнее о plyr можно узнать на отличном веб-сайте Хэдли: http://had.co.nz/plyr/

2 голосов
/ 08 февраля 2011

Я бы использовал ave, чтобы определить количество дней, в течение которых каждый пользователь был активен в месяц.

Data$activeDays <- ave(Data$userID, Data$userID, FUN=length)
Data[ Data$activeDays >= 30, ]

Было бы немного сложнее, если бы ваш набор данных содержал несколько месяцев ...

2 голосов
/ 08 февраля 2011
subset(dnow, ave(as.numeric(date), userID, FUN=function(x) length(unique(x)))==30)
0 голосов
/ 08 февраля 2011
which(tapply(userdata$date, userdata$userID, length) == 30)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...