필자가 작성한 함수를 조정하는 데 어려움을 겪고 있으며 두통을 겪고 있으므로 여기에 게시 할 생각입니다.By 함수를 통한 가중 평균
함수에서 나는 R의 "by"함수를 사용하는데, 이는 데이터 프레임을 부분 집합에두고 함수를 실행합니다.
이제 'descr'패키지의 weighted.mean을 포함하도록 함수를 확장하고 x 및 w 길이가 동일하지 않은 오류가 발생합니다.
일부 코드를 표시합니다 :
set.seed(100)
d1 <- rnorm(300)
d2 <- (floor(runif(100, min=1, max=4)))
weight <- rnorm(300,mean = 1, sd = 1)
df <- cbind.data.frame(d1,d2,weight)
df$d2 <- factor(df$d2,
levels = c(1,2,3,4),
labels = c("red", "blue", "green","orange"))
require('descr')
by(df$d1, df$d2, function(x) mean(x=x, na.rm=TRUE))
by(df$d1, df$d2, function(x) weighted.mean(x=x,w=df$weight na.rm=TRUE))
그래서 내가 1 개 수치, 4 단계 1 개 요소와 dataframe을 만들고있어 만 3과 체중 변수 (예를 들어/fitlered 누락 된 데이터) 데이터를 가지고 있지만 .
8 번째 명령은 지금 가지고있는 것이지만 지금은 그 안에 무게를 더할 필요가 있습니다. 이렇게하면 색상 당 평균값이됩니다. 또한 그것은 d2의 레벨에 NA를 반환하는데, 여기에는 내가 필요로하는 데이터가 없습니다. (다른 데이터 세트를 작업하면서 결과를 병합해야하므로 정의 된 모든 레벨도 출력되어야합니다.)
9 번째 명령 (weighted.mean이있는 명령)은 오류를 반환합니다 x/w의 길이가 다른 것입니다. 이것은 df $ d2 조각 당 df $ d1의 하위 집합을 만들지 만 weighted.mean (x = x, w = weight, ...)의 가중치는 전체 변수이며 부분 집합.
weighted.mean의 코드를보고 재 작성 할 수 없는지 알아 보려고했지만 해결책을 찾지 못했습니다. 도움은 언제나 환영합니다.
텍사스 백만으로 나눈 입력으로 전체 data.frame을 사용하는 것입니다하지만 지금부터 그것을 기억합니다 .. –