У меня есть этот фрейм данных.
user action date rank
AAA jump 2018-01-01 1
AAA climb 2018-01-02 2
AAA leap 2018-01-03 3
BBB jump 2018-01-01 1
BBB climb 2018-01-03 2
BBB leap 2018-01-05 3
BBB gallop 2018-01-08 4
CCC leap 2018-01-01 1
CCC climb 2018-01-02 2
CCC gallop 2018-01-04 3
Он выполняет действия и добавляет рейтинг для пользователя в соответствии с датой в порядке возрастания.
Я хочу найти всех пользователей, которые принялидействия в неправильном порядке.Заказ должен быть jump -> climb -> leap -> gallop
.
Вывод будет CCC
, так как этот пользователь совершил прыжок перед подъемом.
user
CCC
Как сделать ссылку на определенную строку?Я использую dplyr
, и я могу сгруппировать его по каждому пользователю и добавить ранг для каждого пользователя с row_number()
, но я не знаю, как создавать правила, которые проверяют, происходят ли действия в правильном порядке.
Примечание. Я понял, что это неясно.Не каждый пользователь выполняет все действия, но порядок все еще имеет значение.
Это то, что я работаю до сих пор
badData <- NULL
for (i in df$user){
filtered <- filter(df, user == i)
first <- ifelse(filtered[filtered$action == "jump",]$rank > 1, TRUE, FALSE)
second <- ifelse(filtered[filtered$action == "climb",]$rank < filtered[filtered$action == "jump",]$rank, TRUE, FALSE)
#and so on for the rest of the rules
if(first + second > 0) badData <- c(badData, i)
}