다음과 비슷한 데이터 프레임이 있습니다. 일부 개인은 특정 변수에 대해 둘 이상의 관찰을 가지며 각 변수에는 추정치와 관련된 표준 오차 (SE)가 있습니다. 각 개인에 대해 하나의 행만 포함하는 새로운 데이터 프레임을 만들고 싶습니다. Kim이나 Bob과 같이 하나 이상의 관찰이있는 개인의 경우, 새로 계산 된 가중 평균에 대한 분산과 함께 추정치의 표준 오차를 기반으로 정밀도 가중 평균을 계산해야합니다. 가중 평균의 분산 될 반복 된 관측으로 행 중에서 정밀도 가중 평균을 생성합니다.
weighted.mean(c(example$var1[2], example$var1[10]),
c(1/example$SE1[2], 1/example$SE1[10]))
와 밥의 새로운 SE1에 대한
는 것으로 예를 들어, 밥을 위해,이 var1, 이것은 내가 새로운 dataframe에서 자신의 VAR1 값이 원하는 것을 의미 : 나는 집계 함수를 사용하여 시도 및 값의 산술 평균을 계산할 수,하지만 내가 쓴 간단한 기능은 표준 오차를 사용하지 않으며이 NAS에 처리 할 수있다1/sum(1/example$SE1[2] + 1/example$SE1[10])
.
aggregate(example[,1:4], by = list(example[,5]), mean)
이 문제를 해결하기위한 코드를 개발하는 데 도움이 되시길 바랍니다. 다음은 예제 데이터 집합입니다.
set.seed(1562)
example=data.frame(rnorm(10,8,2))
colnames(example)[1]=("var1")
example$SE1=rnorm(10,2,1)
example$var2=rnorm(10,8,2)
example$SE2=rnorm(10,2,1)
example$id=
c ("Kim","Bob","Joe","Sam","Kim","Kim","Joe","Sara","Jeff","Bob")
example$SE1[5]=NA
example$var1[5]=NA
example$SE2[10]=NA
example$var2[10]=NA
example
var1 SE1 var2 SE2 id
1 9.777769 2.451406 6.363250 2.2739566 Kim
2 8.753078 2.174308 6.219770 1.4978380 Bob
3 7.977356 2.107739 6.835998 2.1647437 Joe
4 11.113048 2.713242 11.091650 1.7018666 Sam
5 NA NA 11.769884 -0.1310218 Kim
6 5.271308 1.831475 6.818854 3.0294338 Kim
7 7.770062 2.094850 6.387607 0.2272348 Joe
8 9.837612 1.956486 8.517445 3.5126378 Sara
9 4.637518 2.516896 7.173460 2.0292454 Jeff
10 9.004425 1.592312 NA NA Bob
고마워요. 매우 유용한 답변. – msis