【发布时间】:2021-06-14 16:37:41
【问题描述】:
我的数据集来自一个由非数据导向的同事设置的 excel 文件。我的数据很敏感,所以我不能分享数据集,但我会尝试做一个例子,这样更容易理解我在说什么。我有一个唯一标识符列。我的问题是日期列。我有多个日期列。导入 R 时,一些列作为日期导入,其中一些作为 excel 日期导入。然后列中的某些单元格具有一串日期(字符类型)。并非所有字符串的大小都相同。有些有 2 个列表,有些有 7 个列表。
我正在尝试整理我的数据。我的想法是将所有收集日期放在一列中。这是我卡住的地方。我可以使用 pivot_longer() bc 不是所有的列都是相同的类型。我无法将 excel 日期转换为 R 日期而无需摆脱字符串列表。而且我无法摆脱字符串列表,因为我遇到了错误:长度不兼容。我认为我的逻辑流程是错误的,任何为我指明正确方向的建议都会有所帮助。在我的流程正确后,我可以查找编码。
我有什么:
Unique.ID Collection.Date1 Test.Result1 Collection.Date2 Test.Result2 Collection.Date3
1 1 12/12/2020 positive 1/1/21 negative 44890
2 2 11/30/20 negative 1/8/21,1/20/21 negative 2/10/21,3/10/21,4/10/21
3 3 1/20/21 negative 44011 positive 44007
4 4 12/1/20 positive 44018 negative 44064
我想要什么:
Unique ID Collection Date Test Result
1 12/12/20 positive
1 1/1/21 negative
1 2/2/21 NA
2 11/30/20 negative
2 1/8/21 negative
2 1//20/21 negative
2 2/10/21 NA
2 3/10/21 NA
2 4/10/21 NA
3 1/20/21 negative
3 3/3/21 positive
3 4/3/21 NA
4 12/1/20 positive
4 3/3/21 negative
4 4/3/21 NA
如果我尝试先将所有内容都转换为日期,则会遇到字符串错误。当我尝试扩展字符串时,由于它们的长度不同,这样做会出错。
【问题讨论】:
-
尝试使用tidyr包中的gather()函数
-
pivot_longer()是 tidyr 中gather()的新/改进版本。