[R] 이기적 스터디 카페 17주차 예상문제 (실기1유형 10문제)

: ) YOUNG·2022년 5월 25일
2
post-thumbnail

링크 : https://cafe.naver.com/yjbooks/24367
data url = https://raw.githubusercontent.com/Datamanim/datarepo/main/body/body.csv

초기 데이터 호출


main.ds <- read.csv( 'https://raw.githubusercontent.com/Datamanim/datarepo/main/body/body.csv',
   encoding = "UTF-8"
 )
library(dplyr)
head(main.ds)

> head(main.ds)
  측정나이 측정회원성별 신장...cm 체중...kg 체지방율....
1       59            M     175.0      70.6         19.2
2       40            F     161.4      45.8         21.7
3       27            M     176.6      84.8         19.2
4       38            M     167.6      76.7         24.7
5       21            M     165.2      66.2         21.5
6       22            F     164.6      54.1         27.6
  이완기혈압.최저....mmHg 수축기혈압.최고....mmHg 악력D...kg
1                      91                     150       40.6
2                      62                     119       22.1
3                      87                     153       45.9
4                      63                     132       43.6
5                      83                     106       33.5
6                      65                     110       28.9
  앉아윗몸앞으로굽히기...cm 교차윗몸일으키기...회 제자리.멀리뛰기...cm 등급
1                      12.2                    30                  179    C
2                      16.0                    32                  165    B
3                      13.2                    61                  216    B
4                      16.0                    45                  231    A
5                      10.6                    46                  198    C
6                      18.8                    50                  158    B



1. 전체데이터의 수축기혈압(최고) - 이완기혈압(최저)의 평균을 구하여라


ds1 <- main.ds
str(ds1)
ds1$평균 <- NA
ds1$평균 <- ds1$수축기혈압.최고....mmHg - ds1$이완기혈압.최저....mmHg
result1 <-  mean(ds1$평균)
print(result1)

> print(result1)
[1] 52.19539


2. 50~59세의 신장평균을 구하여라


ds2 <- main.ds
library(dplyr)
ds2.temp <- ds2 %>% filter(측정나이 >= 50 & 측정나이 < 60) %>% summarise(mean = mean(신장...cm))
print(ds2.temp)


> print(ds2.temp)
      mean
1 164.0749


3. 연령대 (20~29 : 20대 ...) 별 인원수를 구하여라


ds3 <- main.ds
min(ds3$측정나이)
max(ds3$측정나이)
ds3$측정나이[ds3$측정나이 >= 20 & ds3$측정나이 <= 29] <- 20
ds3$측정나이[ds3$측정나이 >= 30 & ds3$측정나이 <= 39] <- 30
ds3$측정나이[ds3$측정나이 >= 40 & ds3$측정나이 <= 49] <- 40
ds3$측정나이[ds3$측정나이 >= 50 & ds3$측정나이 <= 59] <- 50
ds3$측정나이[ds3$측정나이 >= 60 & ds3$측정나이 <= 69] <- 60
ds3$측정나이 <- as.factor(ds3$측정나이)

ds3.temp <- cbind(ds3, count = 1)
result3 <- aggregate(
    data = ds3.temp,
    count ~ 측정나이,
    FUN = sum
)

names(result3) <- c("연령대", "인원수")
print(result3)

> print(result3)
  연령대 인원수
1     20   5831
2     30   2660
3     40   1801
4     50   1769
5     60   1335


4. 연령대 (20~29 : 20대 ...) 별 등급의 숫자를 데이터 프레임으로 표현하라


ds4 <- main.ds
ds4$측정나이[ds4$측정나이 >= 20 & ds4$측정나이 <= 29] <- 20
ds4$측정나이[ds4$측정나이 >= 30 & ds4$측정나이 <= 39] <- 30
ds4$측정나이[ds4$측정나이 >= 40 & ds4$측정나이 <= 49] <- 40
ds4$측정나이[ds4$측정나이 >= 50 & ds4$측정나이 <= 59] <- 50
ds4$측정나이[ds4$측정나이 >= 60 & ds4$측정나이 <= 69] <- 60
ds4$측정나이[ds4$측정나이 >= 70 & ds4$측정나이 <= 79] <- 70
ds4$측정나이 <- as.factor(ds4$측정나이)

ds4.temp <- cbind(ds4, count = 1)
head(ds4.temp)

result4 <- aggregate(
    data = ds4.temp,
    count~ 측정나이 + 등급,
    FUN = sum
)

result4 <- result4[order(result4$측정나이), ]
rownames(result4) <- NULL
print(result4)

> print(result4)
   측정나이 등급 count
1        20    A  1585
2        20    B  1443
3        20    C  1455
4        20    D  1348
5        30    A   743
6        30    B   697
7        30    C   626
8        30    D   594
9        40    A   386
10       40    B   428
11       40    C   455
12       40    D   532
13       50    A   321
14       50    B   410
15       50    C   474
16       50    D   564
17       60    A   314
18       60    B   371
19       60    C   339
20       60    D   311


5. 남성 중 A등급과 D등급의 체지방률 평균의 차이(큰 값에서 작은 값의 차)를 구하여라

ds5 <- main.ds
str(ds5)

ds5.temp <- ds5 %>% filter(측정회원성별 == "M" & (등급 == 'A' | 등급 == 'D'))
A.체지방율 <- ds5.temp %>% filter(등급 == 'A') %>% summarise(Amean = mean(체지방율....))
D.체지방율 <- ds5.temp %>% filter(등급 == 'D') %>% summarise(Dmean = mean(체지방율....))

result5 <- abs(A.체지방율 - D.체지방율)
print(result5)

> print(result5)
     Amean
1 7.932086


6. 여성 중 A등급과 D등급의 체중의 평균의 차이(큰 값에서 작은 값의 차)를 구하여라


ds6 <- main.ds
ds6.temp <- ds6 %>% filter(측정회원성별 == "F" & (등급 == 'A' | 등급 == 'D'))
A.체지방율 <- ds6.temp %>% filter(등급 == 'A') %>% summarise(Amean = mean(체중...kg))
D.체지방율 <- ds6.temp %>% filter(등급 == 'D') %>% summarise(Dmean = mean(체중...kg))

result6 <- abs(A.체지방율 - D.체지방율)
print(result6)

> print(result6)
     Amean
1 5.176212


7. bmi는 자신의 몸무게(kg)를 키의 제곱(m)으로 나눈값이다. 데이터의 bmi 를 구한 새로운 컬럼을 만들고 남성의 bmi 평균을 구하여라

ds7 <- main.ds
ds7$bmi <- NA
ds7$bmi <-  ( ds7$체중...kg / (ds7$신장...cm/100)^2 )
ds7 <- ds7 %>% filter(측정회원성별 == 'M')
result7 <- mean(ds7$bmi)
print(result7)

> print(result7)
[1] 24.46134


8. bmi보다 체지방율이 높은 사람들의 체중평균을 구하여라

ds8 <- main.ds
ds8$bmi <- NA
ds8$bmi <- ( ds8$체중...kg / (ds8$신장...cm/100)^2 )

result8 <- ds8 %>% filter(bmi < 체지방율....) %>% summarise(mean = mean(체중...kg))
print(result8)

> print(result8)
      mean
1 61.74088


9. 남성과 여성의 악력 평균의 차이를 구하여라


ds9 <- main.ds
ds9.m <- ds9 %>% filter( 측정회원성별 == 'M' ) %>% summarise(man.mean = mean(악력D...kg))
ds9.f <- ds9 %>% filter( 측정회원성별 == 'F' ) %>% summarise(woman.mean = mean(악력D...kg))
result9 <- abs(ds9.m - ds9.f)
print(result9)

> print(result9)
  man.mean
1 17.55954


10. 남성과 여성의 교차윗몸일으키기 횟수의 평균의 차이를


ds10 <- main.ds
ds10.m <- ds10 %>% filter( 측정회원성별 == 'M' ) %>% summarise(man.mean = mean(교차윗몸일으키기...))
ds10.w <- ds10 %>% filter( 측정회원성별 == 'F' ) %>% summarise(woman.mean = mean(교차윗몸일으키기...))
result10 <- abs(ds10.m - ds10.w)
print(result10)

> print(result10)
  man.mean
1 14.24316

0개의 댓글