[문제167] 조사된 데이터 값들이 있습니다. 도수분포표를 만드세요.
90 88 78 65 80 94 69 72 83 64 95 68 87 69 82 91 63 70 81 67
계급 | 도수 | 누적도수 |
90점이상 | 4 | 4 |
80점이상~90점미만 | 6 | 10 |
70점이상~80점미만 | 3 | 13 |
60점이상~70점미만 | 7 | 20 |
1) 데이터 입력하기
<- scan() : 작은데이터를 console창에 입력해서 만들 수 있다.
2) 빈도표 생성하기
ft <- data.frame(계급=c('90점이상','80점이상~90점미만','70점이상~80점미만','60점이상~70점미만'),
도수=c(0,0,0,0))
for(i in score){
if(i>=90){
ft[1,2] <- ft[1,2]+1
} else if(i>=80){
ft[2,2] <- ft[2,2]+1
} else if(i>=70){
ft[3,2] <- ft[3,2]+1
} else if(i>=60){
ft[4,2] <- ft[4,2]+1
}
}
ft$상대도수 <- prop.table(ft$도수)
for(i in 1:nrow(ft)){
if(i==1){
ft$누적도수[i] <- ft$도수[i]
} else{
ft$누적도수[i] <- ft$도수[i] + ft$누적도수[i-1]
}
}
[문제168] 조사된 데이터 값들이 있습니다. 도수분포표를 만드세요. 단 기존값(수치형)을 문자(범주형)로 수정한 후 도수를 구하세요. 예) 90 -> "90점 이상", 88 -> "80점이상~90점미만"
계급 | 도수 | 누적도수 |
90점이상 | 4 | 4 |
80점이상~90점미만 | 6 | 10 |
70점이상~80점미만 | 3 | 13 |
60점이상~70점미만 | 7 | 20 |
1) 값 수정
categorical <- function(x){
ifelse(x>=90,"90점이상",
ifelse(x>=80,"80점이상~90점미만",
ifelse(x>=70,"70점이상~80점미만","60점이상~70점미만")))
}
x <- categorical(score)
2) 빈도표 생성하기
as <- data.frame(table(
factor(x,
levels=c('90점이상','80점이상~90점미만','70점이상~80점미만','60점이상~70점미만'))))
names(as) <- c("계급","도수")
as$상대도수 <- prop.table(as$도수)
as$누적도수 <- cumsum(as$도수) #누적값 함수
+) factor(x,levels=) : 순서 변경하기
'R' 카테고리의 다른 글
[R] 시각화 - histogram, box plot (0) | 2022.01.27 |
---|---|
[R] cut (0) | 2022.01.27 |
[R] reshape2::melt,dcast (0) | 2022.01.26 |
[R] 시각화 - 산점도 그래프(scatter plot) (0) | 2022.01.25 |
[R] bar plot 문제(실제 데이터 사용) (0) | 2022.01.25 |