【问题标题】:After pivoting, collapsing new rows by common column values in R旋转后,按 R 中的公共列值折叠新行
【发布时间】:2017-08-16 21:12:04
【问题描述】:

我有一个数据集,其中包含对几位患者 (USUBJID) 进行的 9 项实验室测试,其中每个实验室 (LABCAT) 都有自己的行和各自的执行日期 (LBDY)。我想转置这个,所以每个实验室都有自己的专栏,而执行的日期就是价值。

我执行如下枢轴。

library(dplyr)
LB <- lb %>%
   select(USUBJID, LBCAT, LBDY)  %>%
   group_by(USUBJID) %>%
   mutate(visitnum = sequence(n())) %>%
   spread(key= LBCAT, value= LBDY) 

这很好,但现在我想合并这些行,因为很多这些实验室都是在同一天进行的。因此,我想要在第 -21 天进行的所有实验室的一行,在第 -15 天、-2 天等的一行。有没有一种简单的方法来执行这项任务,因为我偶尔会遇到它并想要一个长期的解决方案。

我希望数据看起来像这样

       Chemistry   Hematology Immunology   InfectiousDiseases Morphology ...
90301    -21          -21        NA           -21               -21
90301     NA          -15        NA            NA               -15
90301    -2           -2        -2             NA               -2

谢谢!

【问题讨论】:

  • 您能展示您希望最终输出的样子吗?
  • 嗨,刚刚添加了一个最终目标

标签: r dplyr pivot


【解决方案1】:

您的代码几乎可以做到这一点,只需按USUBJIDLBCAT 分组。

LB <- lb %>%
   select(USUBJID, LBCAT, LBDY)  %>%
   group_by(USUBJID, LBCAT) %>%
   mutate(visitnum = sequence(n())) %>%
   spread(key= LBCAT, value= LBDY)

【讨论】:

  • 谢谢,这似乎有效。您能解释一下为什么按实验室类别进行分组在旋转时会产生这种效果吗?数据中究竟发生了什么?
猜你喜欢
  • 1970-01-01
  • 2023-03-25
  • 1970-01-01
  • 2021-06-25
  • 2015-09-25
  • 1970-01-01
  • 2015-08-08
  • 2013-05-22
  • 1970-01-01
相关资源
最近更新 更多