2017-10-12 12 views
0

R에서 tapply()를 많이 사용했지만 tapply() 함수 이후에 크기 순서가 갑자기 변환되는 이유를 알 수 없습니다 은 적용되다.tapply()가 적용될 때 R의 데이터 프레임의 원래 자릿수가 갑자기 변경 됨

원본 CSV 데이터를로드하면 데이터가 다음과 같이 표시됩니다.

Barcode  Group  Price 
1002-01-23  A  10.23568975 
1002-01-24  A  2356.25 
1002-01-25  A  123.54897 
1002-01-26  A  200.1548794 

그러나 R 코드를 사용한 후 가격의 자릿수는 다음과 같이 변환됩니다. 싶습니다

Barcode  Group  Price   mean 
1002-01-23  A  10.23569  672.5474 
1002-01-24  A  2356.25000 672.5474 
1002-01-25  A  123.54897  672.5474 
1002-01-26  A  200.15488  672.5474 

는 평균의 결과 672.5473847875 (200.1548794 = + (+ 10.23568975 2356.25 123.54897 +)/4)를 가지고있다. 문제를 어떻게 해결할 수 있습니까? 내 R 코드를 보여 드리죠.

barcode <- read.csv("barcode.csv",header=T) 
barcode$Group <- as.factor(barcode$Group) 
barcode$Price <- as.numeric(barcode$Price) 
test <- tapply(barcode$Price, barcode$Group, mean) 
test1 <- data.frame(Group=names(test), mean=test) 
barcode$mean <- test1$mean[match(barcode$Group, test1$Group)] 

정말 도움이 필요합니다. 정말 고맙습니다.

+1

이것은 내부적으로 저장된 값보다는 값을 인쇄하는 것과 거의 관련이 있습니다. 예를 들어,'temp <- 1.00045346643' 그리고 콘솔에'temp'를 입력하십시오. 그런 다음'print (temp, digits = 10)'을 시도하십시오. – lmo

+0

RStudio 관련 문제에 대한 RStudio 태그를 저장하십시오. 예를 들어 RGui에서는 정상적으로 실행되었지만 RStudio에서는 작동하지 않는 코드가있는 경우입니다. – Gregor

답변

0

평균은 정확하게 계산됩니다. 예를 들어, 인쇄되는

barcode$mean == 672.5473847875 
[1] TRUE TRUE TRUE TRUE 

당신은 숫자의 기본 번호를 변경할 수 있습니다 :이 볼 수있는 가장 간단한 방법은 그것을 테스트하는 것입니다

options(digits=15)