2010-01-11 70 views
2

一個相當新的R程序員,我似乎已經運行到一個奇怪的問題 - 可能是我的經驗不足有R訂貨合併的數據幀

閱讀和合並連續的文件合併爲一個數據幀後,我發現,爲了不按預期對數據進行排序。

我在每個文件中有多個參考,但每個文件都是指在不同時間獲得的測量數據。

下面的代碼

library(reshape) 
# Enter file name to Read & Save data 
FileName=readline("Enter File name:\n") 
# Find first occurance of file 
for (round1 in 1 : 6) { 
ReadFile=paste(round1,"C_",FileName,"_Stats.csv", sep="") 
if (file.exists(ReadFile)) 
break 
} 

x = data.frame(read.csv(ReadFile, header=TRUE),rnd=round1) 
for (round2 in (round1+1) : 6) { 
# 
ReadFile=paste(round2,"C_",FileName,"_Stats.csv", sep="") 
if (file.exists(ReadFile)) { 
y = data.frame(read.csv(ReadFile, header=TRUE),rnd = round2) 
    if (round2 == (round1 +1)) 
    z=data.frame(merge(x,y,all=TRUE)) 
    z=data.frame(merge(y,z,all=TRUE)) 
} 
} 
ordered = order(z$lab_id) 

results = z[ordered,] 

res = data.frame(lab=results[,"lab_id"],bw=results[,"ZBW"],wi=results[,"ZWI"],pf_zbw=0,pf_zwi=0,r = results[,"rnd"]) 


# 
# Establish no of samples recorded 
nsmpls = length(res[,c("lab")]) 

# Evaluate Z_scores for Between Lab Results 
for (i in 1 : nsmpls) { 
if (res[i,"bw"] > 3 | res[i,"bw"] < -3) 
res[i,"pf_zbw"]=1 
} 
# Evaluate Z_scores for Within Lab Results 
for (i in 1 : nsmpls) { 
if (res[i,"wi"] > 3 | res[i,"wi"] < -3) 
res[i,"pf_zwi"]=1 
} 

dd = melt(res, id=c("lab","r"), "pf_zbw") 
b = cast(dd, lab ~ r) 

如果任何人都可以明白爲什麼排序僅適用於大約55 70的記錄,並能引導我在正確的方向,我將不得不

非常感謝

+0

檢查z $ lab_id是否是一個因子(使用is.factor(z $ lab_id))。如果是,請嘗試z $ lab_id < - as.character(z $ lab_id),如果它應該是一個字符向量; z $ lab_id < - as.numeric(as.character(z $ lab_id))如果它應該是一個數字向量。然後再次訂購。 – 2010-01-11 11:17:34

+0

親愛的Eduardo 謝謝。發現得好!!!我知道這很簡單,只是無法弄清楚。 是的字段lab_id是一個字符矢量,但有數字。 喬納森,謝謝你的建議。 全部最好 Steve – Stevesb 2010-01-11 12:46:20

+0

哎呀!! 解決了這個問題後,我現在看到我的'熔化'和'鑄造'沒有正確排列數據。 我會認爲,一旦結果和資源被正確排序,它會自動遵循,當熔化和鑄造它將保持有序。 並非如此。有沒有辦法確保融化和/或演員將實驗室視爲角色矢量,因爲在'b'上執行命令似乎也不起作用。 在此先感謝 – Stevesb 2010-01-11 12:57:24

回答

1

檢查z $ lab_id是否是一個因子(使用is.factor(z$lab_id))。

如果是,嘗試

z$lab_id <- as.character(z$lab_id) 

,如果它應該是一個字符向量;或

z$lab_id <- as.numeric(as.character(z$lab_id)) 

如果它應該是一個數字向量。

然後再次訂購。

詩篇。我以前把這些放在評論中。