R data.table 整理 - 根据多个条件压缩行

R data.table tidying - condense rows based on muliple criteria

***为了问这个问题,我在下面的示例中删除了一个时间列,该列存在于我的实际数据中,该列具有实际时间(尽管标称时间相同,但秒数不同),这导致我的数据每个分数排。当我四舍五入这些时间时,我使用 dcast 解决了我的问题:)

我目前正在尝试整理我的数据,但我 运行 遇到了一些障碍(我是 R 的初学者,我的大部分学习都是从这个网站上进行的)。我想根据匹配的人和症状的标称时间来转换我的数据以在列中显示症状。通过这个数据整理,我将把我的 64,000 个观察数据集减少到大约 8,000 个。我的数据目前看起来像这样:

Person  Nominal.Time  Name           Score
1       +30           A              6
1       +30           B              9
1       +30           C              3
2       +90           A              1
2       +90           B              5
2       +90           C              2

我能够将我的数据转换为以下内容:

library(reshape2)
WideSymptomData <- dcast(SymptomData,Person+Nominal.Time~Symptom.Name, value.var="Symptom.Score")

Person  Nominal.Time  A   B   C
1       +30           6                
1       +30               9           
1       +30                   3       
2       +90           1              
2       +90               5          
2       +90                   2       

但不幸的是,我当时被难住了。我一直在研究,但似乎无法找到如何进行下一步以最终实现这一目标:

Person  Nominal.Time  A   B   C
1       +30           6   9   3                
2       +90           1   5   2        

我认为这个 question 可能与我的相似,尽管我无法成功应用它的答案。非常感谢任何指导,谢谢!

使用以下数据

SymptomData <- data.table(read.table(text="Person  Nominal.Time  Symptom.Name   Symptom.Score
1       +30           A              6
1       +30           B              9
1       +30           C              3
2       +90           A              1
2       +90           B              5
2       +90           C              2", header=T, colClasses=c("numeric","character","character","numeric")))

这很好用

dcast(SymptomData, Person+Nominal.Time~Symptom.Name, value.var="Symptom.Score")
#   Person Nominal.Time A B C
# 1      1          +30 6 9 3
# 2      2          +90 1 5 2

使用 reshape2_1.4.1data.table_1.9.6 进行了测试。确保您的示例能够代表您的真实数据。