함수 ave()
로부터 유도 된 양의 열을 추가하기 위해 사용될 수있는 표준 각 학교 편차 (A, B, C)를 계산한다 다른 열은 data.frame의 다른 그룹에 따라 다릅니다. 여기
은 예이다 :
df1$var <- with(df1, ave(Percent, School, FUN=var))
df1$sd <- with(df1, ave(Percent, School, FUN=sd))
> df1
# School City Percent var sd
#1 A X 92 4.5 2.121320
#2 B Y 80 12.5 3.535534
#3 C Z 95 NA NA
#4 A X 89 4.5 2.121320
#5 B Y 75 12.5 3.535534
which.max()
를 사용하여 추출 될 수있는 가장 큰 값을 갖는 항목 :
가
df1[which.max(df1$var),]
# School City Percent var sd
#2 B Y 80 12.5 3.535534
다른 기지국의 R 옵션 aggregate()
을 사용하는 것이다. 이것은 더 컴팩트 한 형태로 결과를 나타냅니다 :
df2 <- setNames(aggregate(Percent~School, df1, var), c("School", "Percent.var"))
> df2
# School Percent.var
#1 A 4.5
#2 B 12.5
#3 C NA
및
df2 <- setNames(aggregate(Percent~School, df1, sd), c("School", "Percent.sd"))
> df2
# School Percent.sd
#1 A 2.121320
#2 B 3.535534
#3 C NA
또는
, 결합 모두
aggregate
작업 : 이러한 경우
df2 <- setNames(do.call(data.frame,
aggregate(Percent~School, df1, function(x) c(var(x),sd(x)))),
c("School","Percent.var","Percent.sd"))
# School Percent.var Percent.sd
#1 A 4.5 2.121320
#2 B 12.5 3.535534
#3 C NA NA
을, 너무, 최대 값 수 which.max()
:
df2[which.max(df2$Percent.sd),]
# School Percent.var Percent.sd
#2 B 12.5 3.535534
을 사용하여 출력에서 추출 할 수 있습니다. 이 예에서 사용개
데이터 : 우리는 하나 또는 두 개의 인스턴스가 학교에 대한 분산을 계산 해야하는 방법
df1 <- structure(list(School = structure(c(1L, 2L, 3L, 1L, 2L),
.Label = c("A", "B", "C"), class = "factor"),
City = structure(c(1L, 2L, 3L, 1L, 2L),
.Label = c("X", "Y", "Z"), class = "factor"),
Percent = c(92L, 80L, 95L, 89L, 75L)),
.Names = c("School", "City", "Percent"),
class = "data.frame", row.names = c(NA, -5L))
? 또한 해당 데이터 세트의 "열 1"의 분산을 묻는 것은 난센스입니다. –
실제 데이터 세트가 큽니다. 이것은 나의 질문을 설명하기위한 예일뿐입니다. – beginner1
이러한 답변 중 하나가 문제를 해결하는 데 도움이되면 답변 옆에있는 녹색 확인란을 선택하여 문제를 해결하십시오. – Rilcon42