본문 바로가기

R

[R] 빈도표 문제2

[문제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
Recent Posts
Popular Posts
Recent Comments