2015-02-03 2 views
2

일부 NAs가있는 데이터 열 (Percent.Plant.Parasites)이 있습니다. 이 데이터의 평균을 factor "Stage"(즉, 1 단계 평균 = x, 2 단계 평균 = y 등)로 정렬하려고합니다. 이 작업을 시도해 보았습니다.NAs가있는 데이터에서 tapply 사용

tapply(rawdata$Percent.Plant.Parasites, rawdata$Stage, mean) 

그러나 데이터에 NAs가 있으므로 NAs가 표시됩니다. 나는 tapply에 대한 na.rm 옵션 (?있다)가 믿지 않는, 그래서 사용하여 각 단계의 요소의 평균을 계산하려고 : 아무 소용

mean(subset(rawdata,subset=Stage=="stage1")$Percent.Plant.Parasites, na.rm=TRUE) 

합니다. 내가 할 때,

그러나 반환 NA :

In mean.default(subset(rawdata, subset = Stage == "Kax")$Percent.Plant.Parasites, : 

인수가 숫자 또는 논리되지 않습니다 : 대신에 나는 오류가 발생했습니다 내가 integer

어떤 아이디어를 얻을 수

typeof(subset(rawdata,subset=Stage=="Kax")$Percent.Plant.Parasites) 

어디 내가 틀렸어?

감사합니다.

+3

봅니다'의미'의' – mlegge

+4

구조 (부분 집합 (RAWDATA는 무대 "스테이지 1") $ Percent.Plant.Parasites, na.rm = TRUE를 ==) 'tapply'는'tapply (X, INDEX, FUN = NULL, ..., simplify = TRUE)'입니다. '...'매개 변수에서'na.rm = TRUE'를 다음과 같이 지정하려고 할 수 있습니다 :'tapply (rawdata $ Percent.Plant.Parasites, rawdata $ Stage, mean, na.rm = TRUE)' –

+1

무엇입니까? 'class (rawdata $ Percent.Plant.Parasites)'? 나는 'factor'라고 내기를하고 있는데,이 경우 아마도'rawdata $ Percent.Plant.Parasites <- as.numeric (as.character (Percent.Plant.Parasites)) '를 호출해야 할 것입니다. – Jthorpe

답변

0

mean_NA라고 부르는 새로운 함수를 만들면 평균을 계산하기 전에 단순히 NA를 제거한 다음 그 함수를 tapply에서 사용하는 것이 어떨까요? 같은 뭔가 :

mean_NA<-function(v){ 
    avg<-mean(v, na.rm = T) 
return (avg) 
} 

으로는 주석 된 데이터는 숫자/정수의 평균이다 취하고와 INDEX가 계수 (그룹)인지 확인합니다. 이 같은 새로 생성 기능을 사용 :

tapply(X = rawdata$Percent.Plant.Parasites, INDEX = rawdata$Stage, mean_NA) 
관련 문제