首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >通过保留指标变量从年度数据创建月度数据

通过保留指标变量从年度数据创建月度数据
EN

Stack Overflow用户
提问于 2019-11-15 21:11:46
回答 1查看 55关注 0票数 0

我有以下数据集:

代码语言:javascript
复制
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将此数据重写为每月数据。更准确地说,我正在寻找的格式如下

代码语言:javascript
复制
 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

有谁知道怎么做吗?我只是看不出重塑或轴心命令如何能够帮助我做到这一点。我已经提前感谢你的帮助了。

EN

回答 1

Stack Overflow用户

发布于 2019-11-15 21:41:48

使用tidyverse包的一种可能性是包含两个步骤:

  • 首先,定义一个单独为每行生成所需日期的函数。例如,这样的函数可能如下所示:

my_fun <- function(ymon1,ymon2){ dates <- as.Date(paste0(c(ymon1,ymon2),"-01"),format = "%Y-%m-%d") seq.Date(from = dates1,to = dates2,by = "month") %>% format("%Y-%m") %>% tibble(date = .) }

要尝试此函数,只需键入类似mfun("2000-01", "2001-05").

  • Second,use purrr::map2的内容,即可逐行应用此函数并取消嵌套结果:

library(tidyverse) mydata %>% mutate(date = map2(begin_date,end_date,my_fun)) %>% unnest() %>% select(householdnumber,date,typh,id.male,id.female)家庭号码日期类型id.male id.female 1 001999 2000-01 2 q1 q1 2 001999 2000-02 2 q1 q1 3 001999 2000-03 2 q1 q1 4 001999 2000-04 2 q1 q1 ... .......

使用的数据:

代码语言:javascript
复制
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)
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58877797

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档