변수 (열)가 3000
개 이상인 데이터 집합에서 품질 관리를 수행해야합니다. 그러나 몇 가지 조건 만 적용하려고합니다. 첫 번째 단계는 이상 치를 NA
으로 대체하는 것입니다. 나는 3
보다 크거나 작은 관측을 mean
에서 NA
으로 대체하려고합니다. 컬럼별로 열을 처리했습니다.두 개의 "for 루프"for R
height = ifelse(abs(height-mean(height,na.rm=TRUE)) <
3*sd(height,na.rm=TRUE),height,NA)
그리고 다른 열을 기반으로 다른 변수를 만들고 싶습니다. 예를 들어 :
data$CGmark = ifelse(!is.na(data$mark) & !is.na(data$height) ,
paste(data$age, data$mark,sep=""),NA)
내 데이터 세트의 예는 다음과 같습니다
name = factor(c("A","B","C","D","E","F","G","H","H"))
height = c(120,NA,150,170,NA,146,132,210,NA)
age = c(10,20,0,30,40,50,60,NA,130)
mark = c(100,0.5,100,50,90,100,NA,50,210)
data = data.frame(name=name,mark=mark,age=age,height=height)
data
내가 시도이 (하나 개의 조건에 대한) :
d1=names(data)
list = c("age","height","mark")
ntraits=length(list)
nrows=dim(data)[1]
for(i in 1:ntraits){
a=list[i]
b=which(d1==a)
d2=data[,b]
for (j in 1:nrows){
d2[j] = ifelse(abs(d2[j]-mean(d2,na.rm=TRUE)) < 3*sd(d2,na.rm=TRUE),d2[j],NA)
}
}
누군가가 내가 저장하고 있지 않다 말해 줬어 d2
. 원하는 조건을 적용하기 위해 for loops
을 어떻게 만들 수 있습니까? 나는 유사한 질문이있다 그러나 나는 그것을 아직 얻지 않았다는 것을 알고있다. 미리 감사드립니다.
"효율적인 for 루프를 만들어 원하는 조건을 적용하려면 어떻게합니까?"나중에 효과를 걱정하는 것. – shadowtalker