0
數據:https://drive.google.com/file/d/0B20HmmYd0lsFbnE4RUh6N0xtUHc/edit?usp=sharing卸下行與Z評分上述3
在哪裏的DAT $ C,我想與RT除去Z值3或上述項目對於每個SXS組合。
我有兩種方法(乾淨的功能和使用下面的plyr包行)我認爲我可以做到這一點,但一個比另一個刪除更多的行。有人可以向我解釋爲什麼我的清潔功能不符合使用plyr的行。包?
dat <- read.table(file="dat.txt")
# 3SD clean function
clean <- function(df) {
dfc <- df[as.logical(df$C),]
n=tapply(df$RT,list(df$s,df$S),length)
ns=tapply(df$RT,list(df$s),length)
mn=tapply(df$RT,list(df$s,df$S),mean)
sd=tapply(df$RT,list(df$s,df$S),sd)
upper <- mn+3*sd
bad <- logical(dim(df)[1])
levs <- paste(df$s,df$S,sep=".")
for (i in levels(df$s)) for (j in levels(df$S)) {
lev <- paste(i,j,sep=".")
bad[levs==lev] <- df[levs==lev,"RT"] > upper[i,j]
}
df=df[!bad,]
nok=tapply(df$RT,list(df$s,df$S),length)
pbad=100-100*nok/n
print(aperm(round(pbad,1),c(2,1)))
nok=tapply(df$RT,list(df$s),length)
pbad=100-100*nok/ns
print(sort(round(pbad,1)))
print(mean(pbad,na.rm=T))
df
}
require(plyr)
str(ddply(dat,.(s,S,C),function(x) x[scale(x$RT)< 3.00,]))
str(clean(dat))