Присвоение номеров дням последовательных дней - PullRequest
0 голосов
/ 29 января 2019

Фрейм данных, с которым я работаю, имеет два столбца: 1) идентификатор человека и 2) дата.Я пытаюсь назначить числовые значения дня для каждого человека.

Например, у человека 1 есть дата с 2016-01-01 (базовый уровень) до 2016-01-05 (последняя дата для человека 1).Я хочу создать дневной столбец, который бы перевел это на 1, 2, 3, 4, 5. Если у человека 2 есть дата с 2016-01-13 по 2016-01-16, столбец дня для человека 2 будет 1,2, 3, 4.

df <- for(i in length(unique(per1$date))){df$day[per1$date[1] + i] <- i+1}

Это в основном то, что я пытаюсь сделать, но я получаю сообщение об ошибке:

"замена имеет 17119 строк, данные - 1670"

Пожалуйста, дайте мне знать, как я могу написать код для этого.Спасибо.

1 Ответ

0 голосов
/ 29 января 2019

Вы можете использовать это

library(data.table)

## Create Data
df <- data.table(personID = c(1,1,1,2,2,2,2), 
                 Date = c("2016-01-01", "2016-01-02", "2016-01-03", "2016-01-13", "2016-01-14", "2016-01-15", "2016-01-16"))

## Order the data according to date, per user 
df <- df[order(Date), .SD, by = personID]

## Rank the date, within each personID group
df <- df[, Day:= 1:.N, .(personID)]
df

   personID       Date Day
1:        1 2016-01-01   1
2:        1 2016-01-02   2
3:        1 2016-01-03   3
4:        2 2016-01-13   1
5:        2 2016-01-14   2
6:        2 2016-01-15   3
7:        2 2016-01-16   4
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...