【问题标题】:R long to wide format categorial variables and datesR 长到宽格式的分类变量和日期
【发布时间】:2019-05-20 13:53:27
【问题描述】:

我想制作一个具有长格式的数据集,其中包含一个具有宽格式开始和结束日期的分类变量(药物)。因此,每个 ID 应该有一行,并且对于每种药物,有一列具有条目 1/0 患者是否得到药物。并且药物列应该有各自的开始和结束日期作为额外的列。

我想要

test <- data.frame(
  PatID  = c(1L, 1L, 2L, 2L, 3L, 4L,4L),
  medication = c("Jak","Others", "HU", "Inf","Others", "HU","Others"),  startDate   = c("2016-12-14", "2017-02-04", "2016-03-26", "2016-06-13", "2012-27-03", "2012-04-21", "2010-02-03"),
  endDate   = c("2018-11-14", "2018-02-25", "2017-06-13", "2017-11-12", "2018-27-03", "2016-04-30", "2016-08-16")
)

输出应该如下

ID   Jak   Jak_startDate   Jak_endDate   HU   HU_startDate   HU_endDate   Inf   Inf_startDate   Inf_endDate   Others   Others_startDate   Others_endDate <br/>
1    1      2016-12-14    2018-11-14     0     NA                NA        0        NA             NA            1      2017-02-04        2018-02-25
2    0         NA               NA       1   2017-06-13   2017-11-12       1   2018-03-27   2016-04-30           0         NA               NA
3    0         NA               NA       0     NA                NA        0        NA             NA            1      2012-27-03        2018-27-03
4    0         NA               NA       1   2012-04-21   2016-04-30       0        NA             NA            1      2010-02-03        2016-08-16

【问题讨论】:

  • 抱歉 - 刚刚修好了。
  • 是完整的预期输出。我没看到 ID' 3, 4,

标签: r tidyverse reshape2 dcast


【解决方案1】:

使用tidyverse 这是我所做的:

test %>% 
gather(key, value, - PatID, -medication) %>% 
arrange(PatID, value) %>% 
mutate(new_key = paste(medication, key, sep = "_")) %>% 
select(PatID, new_key, value) %>% 
spread(new_key, value) %>% 
left_join(test %>% select(PatID, medication) %>% 
mutate(ind = 1) %>% 
spread(medication, ind))

这里,我把数据加长,然后arrange按照PatIDvalue。然后我创建了一个新的键列new_keyselect,只有三个变量:PatIDnew_keyvalue。然后我把这一切变成宽数据,但我们仍然需要列JakHU 等,它们似乎是指标变量。为此,在left_join 中,我使用测试数据和spread 来获取您请求的列。

【讨论】:

  • 那行得通。感谢您的快速帮助和解释。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-06-07
  • 2018-02-14
  • 2021-10-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多