【发布时间】:2019-12-11 10:14:26
【问题描述】:
我有以下数据集
> dataset2
ID ATCcode date
1 1 N06AA 2001-01-01
2 1 N06AB 2001-04-01
3 1 N06AB 2001-03-01
4 1 N06AB 2001-02-01
5 1 N06AC 2001-01-01
6 2 N06AA 2001-01-01
7 2 N06AA 2001-02-01
8 2 N06AA 2001-03-01
9 3 N06AB 2001-01-01
10 4 N06AA 2001-02-01
11 4 N06AB 2001-03-01
它是长格式的,我希望它是宽格式的。但是,我只想要每个 ATCcode 的最早日期 - 而不是任何较晚的日期。因此,我想在这里结束:
> datasetLong
ID N06AA N06AB N06AC
1 1 2001-01-01 2001-02-01 2001-01-01
2 2 2001-01-01 <NA> <NA>
3 3 <NA> 2001-01-01 <NA>
4 4 2001-02-01 2001-03-01 <NA>
(这只是真实数据集的一个样本,它的值变化更多,观察结果也更多)。
我已经设法对数据集进行了一些转换,但不是以我想要的方式:
dataset3 <- reshape2::dcast(dataset2, ID ~ ATCcode)
给我每个向量/列表的长度:
> dataset3
ID N06AA N06AB N06AC
1 1 1 3 1
2 2 3 0 0
3 3 0 1 0
4 4 1 1 0
我想要一个值而不是长度,并且该值应该是最小值(或最早的日期)。
我在StackOverflow 上发现了一个类似的问题,但我无法以任何方式使用它而不会出现各种错误。我没有在上述尝试中使用熔化,这可能是必要的吗? 任何帮助表示赞赏。
【问题讨论】:
-
您是在专门寻找
reshape2的答案吗?reshape2是retired,作者建议使用tidyr。