mlu.xlsx 분석하기

Q1. 엑셀파일의 해당 sheet 를 불러들여와 주세요.

library(readxl)
mlu <- read_excel("mlu.xls", sheet = "mlu_timedur_freq_cds")
summary(mlu)
##      File               age            utterances_mlu    words_mlu   
##  Length:35          Length:35          Min.   :323.0   Min.   : 813  
##  Class :character   Class :character   1st Qu.:561.0   1st Qu.:1368  
##  Mode  :character   Mode  :character   Median :621.0   Median :1716  
##                                        Mean   :631.8   Mean   :1710  
##                                        3rd Qu.:716.0   3rd Qu.:2060  
##                                        Max.   :890.0   Max.   :2766  
##                                                                      
##  DurationTime        DurationSec     Types_freq       Token_freq  
##  Length:35          Min.   : 527   Min.   : 378.0   Min.   : 832  
##  Class :character   1st Qu.: 924   1st Qu.: 567.5   1st Qu.:1446  
##  Mode  :character   Median :1060   Median : 694.0   Median :1798  
##                     Mean   :1086   Mean   : 669.1   Mean   :1778  
##                     3rd Qu.:1246   3rd Qu.: 775.5   3rd Qu.:2134  
##                     Max.   :1762   Max.   :1014.0   Max.   :2827  
##                     NA's   :1

Q2. 문장 발화 갯수가 너무 적은 데이터는 수상해서 한번 그런 것들이 있는지 알아보고 싶어요. 주어진 녹음 시간 동안 500 문장 이하를 말한 엄마가 몇명이나 되는지 찾아주세요.

library(dplyr)
## 
## Attaching package: 'dplyr'
## The following objects are masked from 'package:stats':
## 
##     filter, lag
## The following objects are masked from 'package:base':
## 
##     intersect, setdiff, setequal, union
mlu_500 <- mlu %>% filter(utterances_mlu <= 500)
length(mlu_500)
## [1] 8

그러므로, 주어진 녹음 시간 동안 500 문장 이하를 말한 엄마는 총 8명입니다.

Q3. 데이터 중에서 DurationTime 과 DurationSec 는 필요하지 않으니 이것들을 제외하고 데이터 프레임을 다시 만들어서 새로운 이름으로 저장해주세요.

mlu_new <- as.data.frame(mlu %>% select(-DurationTime, -DurationSec))
summary(mlu_new)
##      File               age            utterances_mlu    words_mlu   
##  Length:35          Length:35          Min.   :323.0   Min.   : 813  
##  Class :character   Class :character   1st Qu.:561.0   1st Qu.:1368  
##  Mode  :character   Mode  :character   Median :621.0   Median :1716  
##                                        Mean   :631.8   Mean   :1710  
##                                        3rd Qu.:716.0   3rd Qu.:2060  
##                                        Max.   :890.0   Max.   :2766  
##    Types_freq       Token_freq  
##  Min.   : 378.0   Min.   : 832  
##  1st Qu.: 567.5   1st Qu.:1446  
##  Median : 694.0   Median :1798  
##  Mean   : 669.1   Mean   :1778  
##  3rd Qu.: 775.5   3rd Qu.:2134  
##  Max.   :1014.0   Max.   :2827

Q4. 세그룹의 나이가 있는데 각 나이대 별로 평균 MLU를 알고 싶습니다. 이것은 두단계를 거쳐야 하겠죠? 먼저 지난번 숙제에서 한것처럼 words/utterance 해서 MLU 변수 칼럼을 추가해 주세요.

library(dplyr)
mlu_new <- dplyr::rename(mlu_new, utterances= utterances_mlu)
mlu_new <- dplyr::rename(mlu_new, words = words_mlu)
mlu_new$MLU <- (mlu_new$words/mlu_new$utterances)
summary(mlu_new)
##      File               age              utterances        words     
##  Length:35          Length:35          Min.   :323.0   Min.   : 813  
##  Class :character   Class :character   1st Qu.:561.0   1st Qu.:1368  
##  Mode  :character   Mode  :character   Median :621.0   Median :1716  
##                                        Mean   :631.8   Mean   :1710  
##                                        3rd Qu.:716.0   3rd Qu.:2060  
##                                        Max.   :890.0   Max.   :2766  
##    Types_freq       Token_freq        MLU       
##  Min.   : 378.0   Min.   : 832   Min.   :1.730  
##  1st Qu.: 567.5   1st Qu.:1446   1st Qu.:2.447  
##  Median : 694.0   Median :1798   Median :2.745  
##  Mean   : 669.1   Mean   :1778   Mean   :2.696  
##  3rd Qu.: 775.5   3rd Qu.:2134   3rd Qu.:2.916  
##  Max.   :1014.0   Max.   :2827   Max.   :3.476

그 다음에 group_by 와 mean 함수가 돌아가는 사람은 dplyr 의 명령어를 이용하고 그렇지 않은 사람은 aggregate 를 이용해서 각 그룹별로 평균 MLU 를 구해주세요.

mlu_new %>% group_by(age) %>% 
  summarise(mean_MLU = mean(MLU))
## `summarise()` ungrouping output (override with `.groups` argument)
## # A tibble: 3 x 2
##   age   mean_MLU
##   <chr>    <dbl>
## 1 A0        2.50
## 2 A1        2.59
## 3 A2        2.99

Q5. 마지막으로 각 그룹별로 token/type 비율의 평균을 알고 싶어요. 4번에서처럼 token/type 을 나타내는 칼럼을 추가해서 dplyr 혹은 aggregate 를 이용해서 구해주세요. token/type 비율은 한 단어를 몇번이나 반복해서 쓰는지의 지표가 됩니다.

mlu_new %>% group_by(age) %>% 
  summarise(mean_ratio = mean(Token_freq/Types_freq))
## `summarise()` ungrouping output (override with `.groups` argument)
## # A tibble: 3 x 2
##   age   mean_ratio
##   <chr>      <dbl>
## 1 A0          2.57
## 2 A1          2.74
## 3 A2          2.66