Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/83.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R 通过保持指标变量从年度数据创建月度数据_R_Dataframe_Dplyr_Purrr - Fatal编程技术网

R 通过保持指标变量从年度数据创建月度数据

R 通过保持指标变量从年度数据创建月度数据,r,dataframe,dplyr,purrr,R,Dataframe,Dplyr,Purrr,我有以下数据集: householdnumber begindate enddate typh id.male id.female 001999 2000-01 2012-10 2 q1 q2 001999 2012-10 2017-12 4 q1 q2 101999 2005-01 2012-1

我有以下数据集:

householdnumber     begindate    enddate  typh   id.male    id.female
   001999            2000-01     2012-10    2        q1        q2
   001999            2012-10     2017-12    4        q1        q2
   101999            2005-01     2012-11    4        q3        q4
   101999            2012-11     2012-12    2        q3        q4
每个家庭由两人(身份证男性和身份证女性)组成,并有一个唯一的家庭编号。请注意,每个家庭编号在此处表示两次,因为家庭类型在特定日期发生变化(将其视为儿童是家庭的一部分,在特定日期后不再是,反之亦然)

我的目标是使用R将这些数据重写为月度数据。更准确地说,我正在寻找的格式是

 householdnumber      date      typh   id.male  id.female
    001999          2000-01      2        q1        q2
    001999          2000-02      2        q1        q2
     ....
    001999          2012-10      4        q1        q2

有人知道怎么做吗?我根本看不出“重塑”或“轴心”命令如何帮助我实现这一点。已经提前感谢你的帮助了

使用
tidyverse
软件包的一种可能性包括两个步骤:

  • 首先,定义一个函数,分别为每行生成所需的日期。例如,此类函数可能如下所示:

    my_fun <- function(ymon1, ymon2){
    
     dates <- as.Date(paste0(c(ymon1, ymon2), "-01"), format = "%Y-%m-%d")
    
     seq.Date(from = dates[1], to = dates[2], by = "month") %>%
       format("%Y-%m") %>%
       tibble(date = .)
    }
    
已用数据:

mydata <- data.frame(householdnumber = c("001999","001999"),
           begin_date = c("2000-01", "2012-10"),
           end_date = c("2012-10", "2017-12"),
           typh = c(2L, 4L),
           id.male = c("q1", "q2"),
           id.female = c("q1", "q2"),
           stringsAsFactors = F)

mydata Hi,可以在问题内部发布
dput(head(您的_数据))
的输出。另外,请解释最终输出中的
typh
应该是什么样的。除了最后一行之外,总是等于2?这会在“typh”从2变为4时创建一个重复的日期条目。我知道,但OP没有指定他想要哪个
typh
。True。然而,我假设typh一出现就会切换到一个新值。
mydata <- data.frame(householdnumber = c("001999","001999"),
           begin_date = c("2000-01", "2012-10"),
           end_date = c("2012-10", "2017-12"),
           typh = c(2L, 4L),
           id.male = c("q1", "q2"),
           id.female = c("q1", "q2"),
           stringsAsFactors = F)