我有一个数据帧,其是样品ID号码,然后井位置的第一列,像这样的独特组合:将数据插入到数据帧中基于两个因素
>df[1:12,1:10]
S W V3 V4
SID1 A01 <NA> <NA>
SID2 A02 <NA> <NA>
SID3 A03 <NA> <NA>
SID4 A01 <NA> <NA>
SID5 A02 <NA> <NA>
SID5 A03 <NA> <NA>
组合的S和W列是独一无二的,并且必须保持如此,因为一些样品具有重复测量,但对于下游分析原因(不在R中)不能像通常那样放置在同一行上。
我希望根据这两列的唯一组合将数据插入数据框。
我想插入的数据是从另一个数据帧,看起来像这样:
>results[1:12, 1:4]
SampleID Value Assay Well
SID1 0 V3 A01
SID1 0 V4 A01
SID2 1 V3 A02
SID2 2 V4 A02
SID3 0 V3 A03
SID3 1 V4 A03
SID4 0 V3 A01
SID4 0 V4 A01
SID5 1 V3 A02
SID5 2 V4 A02
SID6 0 V3 A03
SID6 1 V4 A03
所以目前我通过列(V3和V4循环,也有真实的数据约1000列设置),并根据样本ID,孔位置和化验的独特组合,逐个插入数据。这很慢。我想通过插入所有V3的值来加快矢量化速度,这取决于样本ID和井号。
我试图
for(i in levels(result$Assay))
{
df$V3[(df$V1 %in% results$SampleID)&(df$V2 %in% results$Well]
= results$Value[results$Assay==i]
}
这对我不起作用。我想象因为我的一些愚蠢!
任何想法?
编辑:
其实,本的解决方案几乎工作。一开始一切都很好,但是因为测试分布在n个文件上,并且当合并试图通过测试将它加入到df中时将样本分散在y文件中,它添加了一个新列并添加一个“.1”结束。
准确地说你期望合并做我想。我的错是因为没有解释我的数据来自不同的文件。
来说明:
我有16个文件。共有1536个样本分布在4个文件中,每个文件384个。有160个独立的测定,分布在4个测定包中。为了运行每个样品的每个分析,我最终得到16个文件。
所以如果我可以合并不添加一个新的列,如果当前化验的列已经存在,那将是完美的。
欢迎您提出所有建议,
对于在解释我的数据时发生垃圾而感到抱歉!
干杯
戴维
你说真实数据有1000列,但你说有160个独立的分析。我认为在最终结果中列=测定(160),行=样品ID *孔(1536)? – 2012-03-03 01:50:41