Назначить несколько дат для каждого студента ID - PullRequest
0 голосов
/ 20 февраля 2019

У меня есть список идентификаторов учеников, перечисленных 1-30 или student_id = c (1:30).Как теперь можно назначить дату с 01-01-2019 по сегодняшний день каждому студенту, использующему либо базовый пакет R, либо функции dplyr.Желаемый выход будет примерно таким:

 Student_ID Date 
  1          01-01-2019
  1          01-02-2019
  1          01-03-2019
  1          01-04-2019 
  2          01-01-2019
  2          01-02-2019
  2          01-03-2019
  2          01-04-2019

Ответы [ 3 ]

0 голосов
/ 20 февраля 2019

Вы можете попытаться сгенерировать последовательность дат, а затем повторить последовательность по мере необходимости.Для вашего примера, предположим, что ваш data.frame называется students

date <- seq(as.Date("01012019",format="%d%m%Y"),as.Date("04012019",format="%d%m%Y"),by=1)

students$Date <- rep(date, times = 4)
0 голосов
/ 20 февраля 2019

Рассмотрим ave для подсчета по группам, который можно использовать для добавления к дате начала, 2019-01-01.Это позволяет настроить группировку любого размера по Student_ID :

df$Date <- with(df, ave(Student_ID, Student_ID, FUN=seq_along)-1 + as.Date("2019-01-01"))

df    
#   Student_ID       Date
# 1          1 2019-01-01
# 2          1 2019-01-02
# 3          1 2019-01-03
# 4          1 2019-01-04
# 5          2 2019-01-01
# 6          2 2019-01-02
# 7          2 2019-01-03
# 8          2 2019-01-04

Rextester demo

0 голосов
/ 20 февраля 2019

Создать фрейм данных для списка студентов и для списка дат и объединить их без какого-либо ключа -

s<-data.frame(student_id=c(1:30))
d<-data.frame(date=seq.Date(as.Date("2019-01-01"), Sys.Date(), by = 'days'))
merge(s,d, all=TRUE)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...