将日期添加到vector的第一个元素以获取新日期,然后添加下一个元素以生成新日期,依此类推

时间:2019-02-16 15:47:21

标签: r loops date

我正在尝试生成一些虚假数据来构成数据集,以便进行一些分析。我正在尝试建立一个有理发日期的数据集,然后根据正常的偏斜数据生成方式生成其他日期。最终目标是预测将来的理发间隔。

我已经为一个客户构建了这个,但是我试图为不同的n值一遍又一遍地做,所以我需要帮助使其更具编程性。我尝试了不同的循环,并且空手而归。我是编程新手。预先感谢!

#load the library for skewed normal generation
library(fGarch) 
#set observations and generate data
n=5
set.seed(1)
days_since_last=rsnorm(n, mean = 35, sd = 5, xi = 2)
days_since_last=as.integer(days_since_last)

#generate random date to start
haircut_date = sample(seq(as.Date('2018/01/01'), as.Date('2019/01/01'), by="day"), 1)

#generate new dates
haircut_date2=haircut_date + days_since_last[1]
haircut_date3=haircut_date2 + days_since_last[2]
haircut_date4=haircut_date3 + days_since_last[4]
haircut_date5=haircut_date4 + days_since_last[4]
haircut_date6=haircut_date4 + days_since_last[5]

#combine dates
date = c(haircut_date2,haircut_date3,haircut_date4,haircut_date5,haircut_date6)

#add dates to generated intervals in a dataframe
haircut_df=data.frame(days_since_last,date)

2 个答案:

答案 0 :(得分:1)

稍有变化,在您的class ListCreateProjectView(APIView): """ POST admin/_proj_/ : create a project """ def post(self, request, format=None): serializer = ProjectSerializer(data=request.data) if serializer.is_valid(): serializer.save() return Response(data=serializer.data) else: return Response(data=serializer.errors) 行之后创建数据框:

haircut_date = sample...

结果:

haircut_df <- data.frame(days_since_last = c(0,days_since_last),
                         date = c(haircut_date, haircut_date + cumsum(days_since_last)))

答案 1 :(得分:0)

这应该给您您想要的东西,

#load the library for skewed normal generation
library(fGarch) 
#set observations and generate data
n=10
set.seed(1)
days_since_last=as.integer(rsnorm(n, mean = 35, sd = 5, xi = 2))

# Creating a variable for cumulative days since the first haircut
cumulative<-cumsum(days_since_last)

#generate random date to start
haircut_date = sample(seq(as.Date('2018/01/01'), as.Date('2019/01/01'), by="day"), 1)

#initializing variable and looping for n
haircut_dates<-as.Date(x = integer(0), origin = "1970-01-01")    
for (i in 1:n)
{
  haircut_dates[i]<-haircut_date+cumulative[i]
}

#add dates to generated intervals in a dataframe
haircut_df=data.frame(haircut_dates,days_since_last)
相关问题