【发布时间】:2014-02-03 21:32:35
【问题描述】:
我的数据如下所示:
ID X1 X2 X3
1 1.4 2 two
2 7.6 30 thirty
2 7.6 50 fifty
2 7.6 40 forty
3 5.6 40 forty
3 5.6 50 fifty
4 3.5 NA NA
5 NA 2 two
ID 表示个体,X1 是对每个个体进行一次测量,X2 和 X3 是相同处理的字符和字符串表示。例如,对于个人 2,X1= 7.6,并接受了 X2 = 30、50 和 40 的治疗(与其他信息相关,X3 = 三十、五十和四十)
我希望它最终看起来像这样,每个人只有一行,并且来自同一个人的多个观察值添加为新列:
ID X1 X2a X3a X2b X3b X2c X3c
1 1.4 2 two NA NA NA NA
2 7.6 30 thirty 50 fifty 40 forty
3 5.6 40 forty 50 fifty NA NA
4 3.5 NA NA NA NA NA NA
5 NA 2 two NA NA NA NA
我想保留 X1=NA 的行(如主题 5),因为这些行在其他列中具有感兴趣的测量值,为了我的示例的简单性而大部分被排除在外。 我的实际数据集非常大(10,000 行,可能有 50 列),因此可以有效处理相当大数据集的方法将是一个加分项。
我一直在使用 reshape 包中的 melt() 和 cast() ,我认为这可以做我想做的事。但是,我收到一个错误,需要我进行聚合(错误:聚合需要 fun.aggregate:默认使用的长度),我不想这样做。获得熔体和铸件合作的建议?还是更好的方法?
我发现了许多类似的问题(例如,this one),但似乎没有一个可以解决我的问题,因为它们不是从相似的数据结构开始的,或者它们不关心数据的哪些实例最终匹配到哪个...
【问题讨论】:
-
我讨厌成为这个人,但知道你为什么这样做会有所帮助。你是想绘制数据,还是做一个线性模型,还是什么?因为如果其中任何一个是目标,那么它当前的形状可能是合适的。
-
@AndrewBarr,我的目标是通过 X2 的各种条件比较 X1 的测量值(t 检验,跟进线性或其他适当的模型)并制作相应的图。我想避免两次计算来自同一个人 (ID) 的 X1 测量值,但希望能够将每个 X2 条件用作测试类别。尽管每个人都可以属于 >1 X2 类别,但出于每个 t 检验的目的,个人要么满足条件,要么不满足条件 - 例如如果我比较 X2=30 与 X2=NOT-30,我希望个人 2 属于 30 类别而不是 NOT-30 类别