我有一個數據幀,其是樣品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