作为一个相当新的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)
如果有人能够理解为什么订购仅适用于70条记录中的55条,并且可以引导我朝着正确的方向前进,我将不得不承担
非常感谢
答案 0 :(得分: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))
如果它应该是一个数字向量。
然后再次订购。
聚苯乙烯。我以前把这些放在评论中。