R-Studio Dplyr Part.3

R-Studio의 Dplyr를 이용한 데이터 필터 Part.3

Featured image

R-Studio 의 정규식

SQL 처럼 다루게 해줍니다!

파일 소스

우클릭 -> 다른이름으로 링크저장 이용해 주세요
jumsu.csv
R정형데이터처리하기.xlsx
progbook.csv

함수 예제

# R정형데이터처리하기.xlsx 파일을 읽어 들이세요.
# 가전제품1~가전제품3 시트를 읽어 와서 하나의 데이터프레임(이름 : myframe)에 병합하시오.
# 단, 분기 구분이 있어야 하므로 quarter(분기 컬럼 이름)을 하나 추가하도록 한다.
  library(rJava)
  library(xlsx)  

  myEncoding = 'UTF-8'
  filename = 'R정형데이터처리하기.xlsx'
  
  
  sheets <- seq(3, 5)
  df <- data.frame()
  
  # 3 4 5 시트에 있는 행을 전부 데이타 프레임에 전부 불러옴
  for(sheet in sheets) {
    dframe <- read.xlsx(file=filename, sheetIndex = sheet, encoding = myEncoding)
    dframe$"quarter" <- paste(sheet-2, "사분기", sep="")
    df <- rbind(df, dframe)
  }
  df
  
# myframe에서 quarter가 1사분기인 경우만 출력하세요.
  quarter_1 <- df[df$quarter=="1사분기", ]
  quarter_1
  
# myframe에서 3사분기가 아닌 경우만 출력하세요.
  not_Quarter_3 <- df[df$quarter!="3사분기", ]
  not_Quarter_3
  
# 전체에서 불량품 수 40을 초과한 경우만 출력하세요. 
  inferior <- df[df$불량품>40, ]
  inferior
  
# 1일생산량이 100~150인 경우만 출력하세요.(between 사용)
  df[between(df$X1일생산량, 100, 150), ]
  
# 1사분기이면서 1일생산량이 200이하인 경우만 출력하세요.
  user_Con01 <- df %>% filter(quarter == "1사분기" & X1일생산량 <= 200)
  user_Con01
  
# 총생산량이 10000 이상이거나 불량품이 35이하인 경우만 출력하세요.
  user_Con02 <- df %>%filter(총생산량 >= 10000 | 불량품 <= 35)
  user_Con02
  
# # %in% 기호를 사용하면 코드를 좀 더 간결하게 작성할 수 있다.
# # %in% 기호와 c() 함수를 이용해 조건 목록을 입력하면 된다.
# # 1사분기, 3사분기 데이터를 출력하시오.
  use_In <- df %>% filter(quarter %in% c("1사분기", "2사분기"))
  use_In
  
# 1사분기 정보를 변수 quarter1에 저장하시오.
  quat1 <- df[df$quarter == "1사분기", ]
  quat1
  
# 1사분기 정보를 변수 quarter2에 저장하시오.
  quat2 <- quat1
  quat2
  
# 변수 quarter1의 1일생산량 평균을 구하시오.(mean 함수)
  mean(quat1$X1일생산량)
  
# 변수 quarter2의 총생산량의 총합을 구하시오.(sum 함수)
  sum(quat2$총생산량)
  
# 1사분기의 총생산량 컬럼만 추출하시오.
  q1_make <- df %>% filter(quarter == "1사분기") %>% select(총생산량)
  q1_make
    
# 전체에서 제품명과 1일생산량의 앞부분 10행까지만 추출하시오.
# 힌트 : head() 함수도 사용할 수 있다.
  user_Con03 <- df %>% select(제품명, X1일생산량)
  head(user_Con03, 10)
  
# 출고량를 기준으로 오름차순으로 정렬하시오.
  user_Asc <- df %>% arrange(출고량)
  user_Asc
    
# 총생산량을 기준으로 내림차순으로 정렬하시오.
  user_Desc <- df %>% arrange(desc(총생산량))
  user_Desc
  
# 분기(quarter)별 오름차순 정렬 후, 불량품으로 내림차순 정렬하시오.
  user_Sort <- df %>%  arrange(quarter, desc(불량품))
  user_Sort
    
# 불량률 컬럼을 만들어 보되, 소수점 3자리까지 표현하시오.
# 불량률 = 불량품 / 총생산량
  prob <- ddply(df, .(제품명), transform, 불량률=불량품/총생산량)
  prob
  
# result 컬럼을 만들어 보세요.
# result 컬럼은 불량률 컬럼이 얼마이상이면 'bad', 아니면 'good'이라는 값을 저장해야 한다.
# 힌트 : ifelse 함수를 사용하면 된다.
  prob2 <- ddply(df, .(제품명), transform, result=ifelse(불량품/총생산량>=0.004, "bad", "good"))
  prob2
  
# 불량률 컬럼 기준으로 오름차순 정렬하시오.
  prob %>% arrange(불량률)
  
# 분기별로 총생산량의 평균과 불량품의 총합 및 빈도수를 구해 보세요(힌트 : n() 함수)
  prob3 <- ddply(df, .(제품명), summarise, 총생산량평균=mean(총생산량), 불량품총합=sum(불량품), 빈도수=dplyr::n())
  prob3

콘솔 결과

> # R정형데이터처리하기.xlsx 파일을 읽어 들이세요.
> # 가전제품1~가전제품3 시트를 읽어 와서 하나의 데이터프레임(이름 : myframe)에 병합하시오.
> # 단, 분기 구분이 있어야 하므로 quarter(분기 컬럼 이름)을 하나 추가하도록 한다.
>   library(rJava)
>   library(xlsx)  
> 
>   myEncoding = 'UTF-8'
>   filename = 'R정형데이터처리하기.xlsx'
>   
>   
>   sheets <- seq(3, 5)
>   df <- data.frame()
>   
>   # 3 4 5 시트에 있는 행을 전부 데이타 프레임에 전부 불러옴
>   for(sheet in sheets) {
+     dframe <- read.xlsx(file=filename, sheetIndex = sheet, encoding = myEncoding)
+     dframe$"quarter" <- paste(sheet-2, "사분기", sep="")
+     df <- rbind(df, dframe)
+   }
>   df
       제품명 X1일생산량 생산일수 총생산량 불량품 출고량 quarter
1    미니오븐        100       60     6000     24   5976 1사분기
2    전기밥솥        150       60     9000     36   8964 1사분기
3      믹서기        200       60    12000     48  11952 1사분기
4  전자레인지        120       60     7200     29   7171 1사분기
5  미니냉장고         80       60     4800     19   4781 1사분기
6      가습기        200       60    12000     48  11952 1사분기
7      선풍기        180       60    10800     43  10757 1사분기
8    미니오븐        100       64     6400     26   6374 2사분기
9    전기밥솥        150       64     9600     39   9561 2사분기
10     믹서기        200       64    12800     52  12748 2사분기
11 전자레인지        120       64     7680     31   7649 2사분기
12 미니냉장고         80       64     5120     21   5099 2사분기
13     가습기        200       64    12800     52  12748 2사분기
14     선풍기        180       64    11520     47  11473 2사분기
15   미니오븐        100       62     6200     22   6178 3사분기
16   전기밥솥        150       62     9300     33   9267 3사분기
17     믹서기        200       62    12400     43  12357 3사분기
18 전자레인지        120       62     7440     26   7414 3사분기
19 미니냉장고         80       62     4960     17   4943 3사분기
20     가습기        200       62    12400     43  12357 3사분기
21     선풍기        180       62    11160     39  11121 3사분기
>   
> # myframe에서 quarter가 1사분기인 경우만 출력하세요.
>   quarter_1 <- df[df$quarter=="1사분기", ]
>   quarter_1
      제품명 X1일생산량 생산일수 총생산량 불량품 출고량 quarter
1   미니오븐        100       60     6000     24   5976 1사분기
2   전기밥솥        150       60     9000     36   8964 1사분기
3     믹서기        200       60    12000     48  11952 1사분기
4 전자레인지        120       60     7200     29   7171 1사분기
5 미니냉장고         80       60     4800     19   4781 1사분기
6     가습기        200       60    12000     48  11952 1사분기
7     선풍기        180       60    10800     43  10757 1사분기
>   
> # myframe에서 3사분기가 아닌 경우만 출력하세요.
>   not_Quarter_3 <- df[df$quarter!="3사분기", ]
>   not_Quarter_3
       제품명 X1일생산량 생산일수 총생산량 불량품 출고량 quarter
1    미니오븐        100       60     6000     24   5976 1사분기
2    전기밥솥        150       60     9000     36   8964 1사분기
3      믹서기        200       60    12000     48  11952 1사분기
4  전자레인지        120       60     7200     29   7171 1사분기
5  미니냉장고         80       60     4800     19   4781 1사분기
6      가습기        200       60    12000     48  11952 1사분기
7      선풍기        180       60    10800     43  10757 1사분기
8    미니오븐        100       64     6400     26   6374 2사분기
9    전기밥솥        150       64     9600     39   9561 2사분기
10     믹서기        200       64    12800     52  12748 2사분기
11 전자레인지        120       64     7680     31   7649 2사분기
12 미니냉장고         80       64     5120     21   5099 2사분기
13     가습기        200       64    12800     52  12748 2사분기
14     선풍기        180       64    11520     47  11473 2사분기
>   
> # 전체에서 불량품 수 40을 초과한 경우만 출력하세요. 
>   inferior <- df[df$불량품>40, ]
>   inferior
   제품명 X1일생산량 생산일수 총생산량 불량품 출고량 quarter
3  믹서기        200       60    12000     48  11952 1사분기
6  가습기        200       60    12000     48  11952 1사분기
7  선풍기        180       60    10800     43  10757 1사분기
10 믹서기        200       64    12800     52  12748 2사분기
13 가습기        200       64    12800     52  12748 2사분기
14 선풍기        180       64    11520     47  11473 2사분기
17 믹서기        200       62    12400     43  12357 3사분기
20 가습기        200       62    12400     43  12357 3사분기
>   
> # 1일생산량이 100~150인 경우만 출력하세요.(between 사용)
>   df[between(df$X1일생산량, 100, 150), ]
       제품명 X1일생산량 생산일수 총생산량 불량품 출고량 quarter
1    미니오븐        100       60     6000     24   5976 1사분기
2    전기밥솥        150       60     9000     36   8964 1사분기
4  전자레인지        120       60     7200     29   7171 1사분기
8    미니오븐        100       64     6400     26   6374 2사분기
9    전기밥솥        150       64     9600     39   9561 2사분기
11 전자레인지        120       64     7680     31   7649 2사분기
15   미니오븐        100       62     6200     22   6178 3사분기
16   전기밥솥        150       62     9300     33   9267 3사분기
18 전자레인지        120       62     7440     26   7414 3사분기
>   
> # 1사분기이면서 1일생산량이 200이하인 경우만 출력하세요.
>   user_Con01 <- df %>% filter(quarter == "1사분기" & X1일생산량 <= 200)
>   user_Con01
      제품명 X1일생산량 생산일수 총생산량 불량품 출고량 quarter
1   미니오븐        100       60     6000     24   5976 1사분기
2   전기밥솥        150       60     9000     36   8964 1사분기
3     믹서기        200       60    12000     48  11952 1사분기
4 전자레인지        120       60     7200     29   7171 1사분기
5 미니냉장고         80       60     4800     19   4781 1사분기
6     가습기        200       60    12000     48  11952 1사분기
7     선풍기        180       60    10800     43  10757 1사분기
>   
> # 총생산량이 10000 이상이거나 불량품이 35이하인 경우만 출력하세요.
>   user_Con02 <- df %>%filter(총생산량 >= 10000 | 불량품 <= 35)
>   user_Con02
       제품명 X1일생산량 생산일수 총생산량 불량품 출고량 quarter
1    미니오븐        100       60     6000     24   5976 1사분기
2      믹서기        200       60    12000     48  11952 1사분기
3  전자레인지        120       60     7200     29   7171 1사분기
4  미니냉장고         80       60     4800     19   4781 1사분기
5      가습기        200       60    12000     48  11952 1사분기
6      선풍기        180       60    10800     43  10757 1사분기
7    미니오븐        100       64     6400     26   6374 2사분기
8      믹서기        200       64    12800     52  12748 2사분기
9  전자레인지        120       64     7680     31   7649 2사분기
10 미니냉장고         80       64     5120     21   5099 2사분기
11     가습기        200       64    12800     52  12748 2사분기
12     선풍기        180       64    11520     47  11473 2사분기
13   미니오븐        100       62     6200     22   6178 3사분기
14   전기밥솥        150       62     9300     33   9267 3사분기
15     믹서기        200       62    12400     43  12357 3사분기
16 전자레인지        120       62     7440     26   7414 3사분기
17 미니냉장고         80       62     4960     17   4943 3사분기
18     가습기        200       62    12400     43  12357 3사분기
19     선풍기        180       62    11160     39  11121 3사분기
>   
> # # %in% 기호를 사용하면 코드를 좀 더 간결하게 작성할 수 있다.
> # # %in% 기호와 c() 함수를 이용해 조건 목록을 입력하면 된다.
> # # 1사분기, 3사분기 데이터를 출력하시오.
>   use_In <- df %>% filter(quarter %in% c("1사분기", "2사분기"))
>   use_In
       제품명 X1일생산량 생산일수 총생산량 불량품 출고량 quarter
1    미니오븐        100       60     6000     24   5976 1사분기
2    전기밥솥        150       60     9000     36   8964 1사분기
3      믹서기        200       60    12000     48  11952 1사분기
4  전자레인지        120       60     7200     29   7171 1사분기
5  미니냉장고         80       60     4800     19   4781 1사분기
6      가습기        200       60    12000     48  11952 1사분기
7      선풍기        180       60    10800     43  10757 1사분기
8    미니오븐        100       64     6400     26   6374 2사분기
9    전기밥솥        150       64     9600     39   9561 2사분기
10     믹서기        200       64    12800     52  12748 2사분기
11 전자레인지        120       64     7680     31   7649 2사분기
12 미니냉장고         80       64     5120     21   5099 2사분기
13     가습기        200       64    12800     52  12748 2사분기
14     선풍기        180       64    11520     47  11473 2사분기
>   
> # 1사분기 정보를 변수 quarter1에 저장하시오.
>   quat1 <- df[df$quarter == "1사분기", ]
>   quat1
      제품명 X1일생산량 생산일수 총생산량 불량품 출고량 quarter
1   미니오븐        100       60     6000     24   5976 1사분기
2   전기밥솥        150       60     9000     36   8964 1사분기
3     믹서기        200       60    12000     48  11952 1사분기
4 전자레인지        120       60     7200     29   7171 1사분기
5 미니냉장고         80       60     4800     19   4781 1사분기
6     가습기        200       60    12000     48  11952 1사분기
7     선풍기        180       60    10800     43  10757 1사분기
>   
> # 1사분기 정보를 변수 quarter2에 저장하시오.
>   quat2 <- quat1
>   quat2
      제품명 X1일생산량 생산일수 총생산량 불량품 출고량 quarter
1   미니오븐        100       60     6000     24   5976 1사분기
2   전기밥솥        150       60     9000     36   8964 1사분기
3     믹서기        200       60    12000     48  11952 1사분기
4 전자레인지        120       60     7200     29   7171 1사분기
5 미니냉장고         80       60     4800     19   4781 1사분기
6     가습기        200       60    12000     48  11952 1사분기
7     선풍기        180       60    10800     43  10757 1사분기
>   
> # 변수 quarter1의 1일생산량 평균을 구하시오.(mean 함수)
>   mean(quat1$X1일생산량)
[1] 147.1429
>   
> # 변수 quarter2의 총생산량의 총합을 구하시오.(sum 함수)
>   sum(quat2$총생산량)
[1] 61800
>   
> # 1사분기의 총생산량 컬럼만 추출하시오.
>   q1_make <- df %>% filter(quarter == "1사분기") %>% select(총생산량)
>   q1_make
  총생산량
1     6000
2     9000
3    12000
4     7200
5     4800
6    12000
7    10800
>     
> # 전체에서 제품명과 1일생산량의 앞부분 10행까지만 추출하시오.
> # 힌트 : head() 함수도 사용할 수 있다.
>   user_Con03 <- df %>% select(제품명, X1일생산량)
>   head(user_Con03, 10)
       제품명 X1일생산량
1    미니오븐        100
2    전기밥솥        150
3      믹서기        200
4  전자레인지        120
5  미니냉장고         80
6      가습기        200
7      선풍기        180
8    미니오븐        100
9    전기밥솥        150
10     믹서기        200
>   
> # 출고량를 기준으로 오름차순으로 정렬하시오.
>   user_Asc <- df %>% arrange(출고량)
>   user_Asc
       제품명 X1일생산량 생산일수 총생산량 불량품 출고량 quarter
1  미니냉장고         80       60     4800     19   4781 1사분기
2  미니냉장고         80       62     4960     17   4943 3사분기
3  미니냉장고         80       64     5120     21   5099 2사분기
4    미니오븐        100       60     6000     24   5976 1사분기
5    미니오븐        100       62     6200     22   6178 3사분기
6    미니오븐        100       64     6400     26   6374 2사분기
7  전자레인지        120       60     7200     29   7171 1사분기
8  전자레인지        120       62     7440     26   7414 3사분기
9  전자레인지        120       64     7680     31   7649 2사분기
10   전기밥솥        150       60     9000     36   8964 1사분기
11   전기밥솥        150       62     9300     33   9267 3사분기
12   전기밥솥        150       64     9600     39   9561 2사분기
13     선풍기        180       60    10800     43  10757 1사분기
14     선풍기        180       62    11160     39  11121 3사분기
15     선풍기        180       64    11520     47  11473 2사분기
16     믹서기        200       60    12000     48  11952 1사분기
17     가습기        200       60    12000     48  11952 1사분기
18     믹서기        200       62    12400     43  12357 3사분기
19     가습기        200       62    12400     43  12357 3사분기
20     믹서기        200       64    12800     52  12748 2사분기
21     가습기        200       64    12800     52  12748 2사분기
>     
> # 총생산량을 기준으로 내림차순으로 정렬하시오.
>   user_Desc <- df %>% arrange(desc(총생산량))
>   user_Desc
       제품명 X1일생산량 생산일수 총생산량 불량품 출고량 quarter
1      믹서기        200       64    12800     52  12748 2사분기
2      가습기        200       64    12800     52  12748 2사분기
3      믹서기        200       62    12400     43  12357 3사분기
4      가습기        200       62    12400     43  12357 3사분기
5      믹서기        200       60    12000     48  11952 1사분기
6      가습기        200       60    12000     48  11952 1사분기
7      선풍기        180       64    11520     47  11473 2사분기
8      선풍기        180       62    11160     39  11121 3사분기
9      선풍기        180       60    10800     43  10757 1사분기
10   전기밥솥        150       64     9600     39   9561 2사분기
11   전기밥솥        150       62     9300     33   9267 3사분기
12   전기밥솥        150       60     9000     36   8964 1사분기
13 전자레인지        120       64     7680     31   7649 2사분기
14 전자레인지        120       62     7440     26   7414 3사분기
15 전자레인지        120       60     7200     29   7171 1사분기
16   미니오븐        100       64     6400     26   6374 2사분기
17   미니오븐        100       62     6200     22   6178 3사분기
18   미니오븐        100       60     6000     24   5976 1사분기
19 미니냉장고         80       64     5120     21   5099 2사분기
20 미니냉장고         80       62     4960     17   4943 3사분기
21 미니냉장고         80       60     4800     19   4781 1사분기
>   
> # 분기(quarter)별 오름차순 정렬 후, 불량품으로 내림차순 정렬하시오.
>   user_Sort <- df %>%  arrange(quarter, desc(불량품))
>   user_Sort
       제품명 X1일생산량 생산일수 총생산량 불량품 출고량 quarter
1      믹서기        200       60    12000     48  11952 1사분기
2      가습기        200       60    12000     48  11952 1사분기
3      선풍기        180       60    10800     43  10757 1사분기
4    전기밥솥        150       60     9000     36   8964 1사분기
5  전자레인지        120       60     7200     29   7171 1사분기
6    미니오븐        100       60     6000     24   5976 1사분기
7  미니냉장고         80       60     4800     19   4781 1사분기
8      믹서기        200       64    12800     52  12748 2사분기
9      가습기        200       64    12800     52  12748 2사분기
10     선풍기        180       64    11520     47  11473 2사분기
11   전기밥솥        150       64     9600     39   9561 2사분기
12 전자레인지        120       64     7680     31   7649 2사분기
13   미니오븐        100       64     6400     26   6374 2사분기
14 미니냉장고         80       64     5120     21   5099 2사분기
15     믹서기        200       62    12400     43  12357 3사분기
16     가습기        200       62    12400     43  12357 3사분기
17     선풍기        180       62    11160     39  11121 3사분기
18   전기밥솥        150       62     9300     33   9267 3사분기
19 전자레인지        120       62     7440     26   7414 3사분기
20   미니오븐        100       62     6200     22   6178 3사분기
21 미니냉장고         80       62     4960     17   4943 3사분기
>     
> # 불량률 컬럼을 만들어 보되, 소수점 3자리까지 표현하시오.
> # 불량률 = 불량품 / 총생산량
>   prob <- ddply(df, .(제품명), transform, 불량률=불량품/총생산량)
>   prob
       제품명 X1일생산량 생산일수 총생산량 불량품 출고량 quarter      불량률
1      가습기        200       60    12000     48  11952 1사분기 0.004000000
2      가습기        200       64    12800     52  12748 2사분기 0.004062500
3      가습기        200       62    12400     43  12357 3사분기 0.003467742
4  미니냉장고         80       60     4800     19   4781 1사분기 0.003958333
5  미니냉장고         80       64     5120     21   5099 2사분기 0.004101563
6  미니냉장고         80       62     4960     17   4943 3사분기 0.003427419
7    미니오븐        100       60     6000     24   5976 1사분기 0.004000000
8    미니오븐        100       64     6400     26   6374 2사분기 0.004062500
9    미니오븐        100       62     6200     22   6178 3사분기 0.003548387
10     믹서기        200       60    12000     48  11952 1사분기 0.004000000
11     믹서기        200       64    12800     52  12748 2사분기 0.004062500
12     믹서기        200       62    12400     43  12357 3사분기 0.003467742
13     선풍기        180       60    10800     43  10757 1사분기 0.003981481
14     선풍기        180       64    11520     47  11473 2사분기 0.004079861
15     선풍기        180       62    11160     39  11121 3사분기 0.003494624
16   전기밥솥        150       60     9000     36   8964 1사분기 0.004000000
17   전기밥솥        150       64     9600     39   9561 2사분기 0.004062500
18   전기밥솥        150       62     9300     33   9267 3사분기 0.003548387
19 전자레인지        120       60     7200     29   7171 1사분기 0.004027778
20 전자레인지        120       64     7680     31   7649 2사분기 0.004036458
21 전자레인지        120       62     7440     26   7414 3사분기 0.003494624
>   
> # result 컬럼을 만들어 보세요.
> # result 컬럼은 불량률 컬럼이 얼마이상이면 'bad', 아니면 'good'이라는 값을 저장해야 한다.
> # 힌트 : ifelse 함수를 사용하면 된다.
>   prob2 <- ddply(df, .(제품명), transform, result=ifelse(불량품/총생산량>=0.004, "bad", "good"))
>   prob2
       제품명 X1일생산량 생산일수 총생산량 불량품 출고량 quarter result
1      가습기        200       60    12000     48  11952 1사분기    bad
2      가습기        200       64    12800     52  12748 2사분기    bad
3      가습기        200       62    12400     43  12357 3사분기   good
4  미니냉장고         80       60     4800     19   4781 1사분기   good
5  미니냉장고         80       64     5120     21   5099 2사분기    bad
6  미니냉장고         80       62     4960     17   4943 3사분기   good
7    미니오븐        100       60     6000     24   5976 1사분기    bad
8    미니오븐        100       64     6400     26   6374 2사분기    bad
9    미니오븐        100       62     6200     22   6178 3사분기   good
10     믹서기        200       60    12000     48  11952 1사분기    bad
11     믹서기        200       64    12800     52  12748 2사분기    bad
12     믹서기        200       62    12400     43  12357 3사분기   good
13     선풍기        180       60    10800     43  10757 1사분기   good
14     선풍기        180       64    11520     47  11473 2사분기    bad
15     선풍기        180       62    11160     39  11121 3사분기   good
16   전기밥솥        150       60     9000     36   8964 1사분기    bad
17   전기밥솥        150       64     9600     39   9561 2사분기    bad
18   전기밥솥        150       62     9300     33   9267 3사분기   good
19 전자레인지        120       60     7200     29   7171 1사분기    bad
20 전자레인지        120       64     7680     31   7649 2사분기    bad
21 전자레인지        120       62     7440     26   7414 3사분기   good
>   
> # 불량률 컬럼 기준으로 오름차순 정렬하시오.
>   prob %>% arrange(불량률)
       제품명 X1일생산량 생산일수 총생산량 불량품 출고량 quarter      불량률
1  미니냉장고         80       62     4960     17   4943 3사분기 0.003427419
2      가습기        200       62    12400     43  12357 3사분기 0.003467742
3      믹서기        200       62    12400     43  12357 3사분기 0.003467742
4      선풍기        180       62    11160     39  11121 3사분기 0.003494624
5  전자레인지        120       62     7440     26   7414 3사분기 0.003494624
6    미니오븐        100       62     6200     22   6178 3사분기 0.003548387
7    전기밥솥        150       62     9300     33   9267 3사분기 0.003548387
8  미니냉장고         80       60     4800     19   4781 1사분기 0.003958333
9      선풍기        180       60    10800     43  10757 1사분기 0.003981481
10     가습기        200       60    12000     48  11952 1사분기 0.004000000
11   미니오븐        100       60     6000     24   5976 1사분기 0.004000000
12     믹서기        200       60    12000     48  11952 1사분기 0.004000000
13   전기밥솥        150       60     9000     36   8964 1사분기 0.004000000
14 전자레인지        120       60     7200     29   7171 1사분기 0.004027778
15 전자레인지        120       64     7680     31   7649 2사분기 0.004036458
16     가습기        200       64    12800     52  12748 2사분기 0.004062500
17   미니오븐        100       64     6400     26   6374 2사분기 0.004062500
18     믹서기        200       64    12800     52  12748 2사분기 0.004062500
19   전기밥솥        150       64     9600     39   9561 2사분기 0.004062500
20     선풍기        180       64    11520     47  11473 2사분기 0.004079861
21 미니냉장고         80       64     5120     21   5099 2사분기 0.004101563
>   
> # 분기별로 총생산량의 평균과 불량품의 총합 및 빈도수를 구해 보세요(힌트 : n() 함수)
>   prob3 <- ddply(df, .(제품명), summarise, 총생산량평균=mean(총생산량), 불량품총합=sum(불량품), 빈도수=dplyr::n())
>   prob3
      제품명 총생산량평균 불량품총합 빈도수
1     가습기        12400        143      3
2 미니냉장고         4960         57      3
3   미니오븐         6200         72      3
4     믹서기        12400        143      3
5     선풍기        11160        129      3
6   전기밥솥         9300        108      3
7 전자레인지         7440         86      3