레이블이 R 기초인 게시물을 표시합니다. 모든 게시물 표시
레이블이 R 기초인 게시물을 표시합니다. 모든 게시물 표시

R 중급 R list 합치기 및 데이터 프레임 나타내기

   list는 R에서 매우 어려운 부분이다.  이 부분을 알게 되면 중급 정도의 소리는 듣는다. 


아래 네이버 지식인의 질문에 대한 답변이다. 


R스튜디오 도와주세요

문제) r에서 제공하는 mtcars 데이터세트를 이용하여 다음 코드들을 작성 하시오.

1) gear(기어)의 개수에 따라 split() 함수를 사용하여 그룹을 나누어 mt.gear에 저장하시오.

2) mt.gear에서 gear(기어)의 개수가 3인 그룹과 5인 그룹의 데이터를 합쳐서 mtgear35변수에 저장하고 내용을 출력하시오.

3) mtcars 데이터세트에서 wt(중량)이 1.5~3.0 사이인 행들을 추출하여 출력하시오.


답의 내용은 아래와 같다. 


split 으로 리스트로 나눈 다음에  합칠때는 c(list, list)로 합친다.  그리고 데이터 프레임을 

나타낼때는  do.call(rbind, list) 함수를 이용한다.

그리고 3번 문제는 dplyr 의 필터를 쓰면 간단하게 해결 된다.  


# mtcars

# 1번문제 답
  mt.gear <-split(mtcars, mtcars$gear)

# 2번문제 답
# 3인 그룹과 5인 그룹의 데이터를 합침    
  mtgear35 <- c(mt.gear[1],mt.gear[3])
  mtgear35     
## $`3`
##                      mpg cyl  disp  hp drat    wt  qsec vs am gear carb
## Hornet 4 Drive      21.4   6 258.0 110 3.08 3.215 19.44  1  0    3    1
## Hornet Sportabout   18.7   8 360.0 175 3.15 3.440 17.02  0  0    3    2
## Valiant             18.1   6 225.0 105 2.76 3.460 20.22  1  0    3    1
## Duster 360          14.3   8 360.0 245 3.21 3.570 15.84  0  0    3    4
## Merc 450SE          16.4   8 275.8 180 3.07 4.070 17.40  0  0    3    3
## Merc 450SL          17.3   8 275.8 180 3.07 3.730 17.60  0  0    3    3
## Merc 450SLC         15.2   8 275.8 180 3.07 3.780 18.00  0  0    3    3
## Cadillac Fleetwood  10.4   8 472.0 205 2.93 5.250 17.98  0  0    3    4
## Lincoln Continental 10.4   8 460.0 215 3.00 5.424 17.82  0  0    3    4
## Chrysler Imperial   14.7   8 440.0 230 3.23 5.345 17.42  0  0    3    4
## Toyota Corona       21.5   4 120.1  97 3.70 2.465 20.01  1  0    3    1
## Dodge Challenger    15.5   8 318.0 150 2.76 3.520 16.87  0  0    3    2
## AMC Javelin         15.2   8 304.0 150 3.15 3.435 17.30  0  0    3    2
## Camaro Z28          13.3   8 350.0 245 3.73 3.840 15.41  0  0    3    4
## Pontiac Firebird    19.2   8 400.0 175 3.08 3.845 17.05  0  0    3    2
## 
## $`5`
##                 mpg cyl  disp  hp drat    wt qsec vs am gear carb
## Porsche 914-2  26.0   4 120.3  91 4.43 2.140 16.7  0  1    5    2
## Lotus Europa   30.4   4  95.1 113 3.77 1.513 16.9  1  1    5    2
## Ford Pantera L 15.8   8 351.0 264 4.22 3.170 14.5  0  1    5    4
## Ferrari Dino   19.7   6 145.0 175 3.62 2.770 15.5  0  1    5    6
## Maserati Bora  15.0   8 301.0 335 3.54 3.570 14.6  0  1    5    8
# 데이터 프레임으로 나타내기 
  mtgear35_df <- data.frame(do.call(rbind, mtgear35))

# 3번 문제 답
  library(dplyr)
  mtcars %>% 
    filter(wt >= 1.5) %>% 
    filter(wt <= 3.0)
##                 mpg cyl  disp  hp drat    wt  qsec vs am gear carb
## Mazda RX4      21.0   6 160.0 110 3.90 2.620 16.46  0  1    4    4
## Mazda RX4 Wag  21.0   6 160.0 110 3.90 2.875 17.02  0  1    4    4
## Datsun 710     22.8   4 108.0  93 3.85 2.320 18.61  1  1    4    1
## Fiat 128       32.4   4  78.7  66 4.08 2.200 19.47  1  1    4    1
## Honda Civic    30.4   4  75.7  52 4.93 1.615 18.52  1  1    4    2
## Toyota Corolla 33.9   4  71.1  65 4.22 1.835 19.90  1  1    4    1
## Toyota Corona  21.5   4 120.1  97 3.70 2.465 20.01  1  0    3    1
## Fiat X1-9      27.3   4  79.0  66 4.08 1.935 18.90  1  1    4    1
## Porsche 914-2  26.0   4 120.3  91 4.43 2.140 16.70  0  1    5    2
## Lotus Europa   30.4   4  95.1 113 3.77 1.513 16.90  1  1    5    2
## Ferrari Dino   19.7   6 145.0 175 3.62 2.770 15.50  0  1    5    6
## Volvo 142E     21.4   4 121.0 109 4.11 2.780 18.60  1  1    4    2

R 기초 ggplot2로 mpg 배기량과 연비의 히스토그램, 바그래프, 산점 그래프 보기

 

   mtcars 데이터로는 다양하게  분석 할 수 있다.  여기에서는 ggplot2 패키지를 만든 아래의  해들리 위컴 서적에서  주로 다루었던 사항을 이야기 하겠다. 



 
해들리 위컴 책에서 주로 나왔던 산점도를 그려 분석 할 수 있는 것은 아래의 변수이다. 

  • displ (배기량)
  • hwy(연비)    
  • class (차동차 등급)

위의 두개의 변수 가지고 산점도를 분석 하였다.   즉 위의 책에서 나오는 이야기는 

배기량 별로 연비가 어떻게 변화는지 그리고 자동차 등급 별로 어떻게 변화는지 설명 하였다. 

사실 자동차에서 배기량 하고 연비의 구조를 보는 것이 매우 현실 적이다. 


아래는 데이터의 구조 이다. 

library(ggplot2)


## 배기량하고 연비를 본다.

#데이터 보기 
 head(mpg)
## # A tibble: 6 x 11
##   manufacturer model displ  year   cyl trans      drv     cty   hwy fl    class 
##   <chr>        <chr> <dbl> <int> <int> <chr>      <chr> <int> <int> <chr> <chr> 
## 1 audi         a4      1.8  1999     4 auto(l5)   f        18    29 p     compa…
## 2 audi         a4      1.8  1999     4 manual(m5) f        21    29 p     compa…
## 3 audi         a4      2    2008     4 manual(m6) f        20    31 p     compa…
## 4 audi         a4      2    2008     4 auto(av)   f        21    30 p     compa…
## 5 audi         a4      2.8  1999     6 auto(l5)   f        16    26 p     compa…
## 6 audi         a4      2.8  1999     6 manual(m5) f        18    26 p     compa…
#데이터 구조 보기 
 str(mpg)
## tibble [234 × 11] (S3: tbl_df/tbl/data.frame)
##  $ manufacturer: chr [1:234] "audi" "audi" "audi" "audi" ...
##  $ model       : chr [1:234] "a4" "a4" "a4" "a4" ...
##  $ displ       : num [1:234] 1.8 1.8 2 2 2.8 2.8 3.1 1.8 1.8 2 ...
##  $ year        : int [1:234] 1999 1999 2008 2008 1999 1999 2008 1999 1999 2008 ...
##  $ cyl         : int [1:234] 4 4 4 4 6 6 6 4 4 4 ...
##  $ trans       : chr [1:234] "auto(l5)" "manual(m5)" "manual(m6)" "auto(av)" ...
##  $ drv         : chr [1:234] "f" "f" "f" "f" ...
##  $ cty         : int [1:234] 18 21 20 21 16 18 18 18 16 20 ...
##  $ hwy         : int [1:234] 29 29 31 30 26 26 27 26 25 28 ...
##  $ fl          : chr [1:234] "p" "p" "p" "p" ...
##  $ class       : chr [1:234] "compact" "compact" "compact" "compact" ...

  

  아래는 자동차 연비(hwy)에 대한 히스토그램이다.   연비가 연속형 자료이기 때문에 히스트그램 그리기가 용이하다. 

# 연비에 대한 히스토그램 보기 
 ggplot(data = mpg) +
   geom_histogram(mapping = aes(hwy), bins =  30)


  연비에 대한 bar 그래프이다. 위에 있는 히스토그램은 분포에 대한 모형을 그리고, bar는 연비에대 한 갯수를 그린것이다. 

 # 연비에 대한 바 그래프
 ggplot(data = mpg) +
   geom_bar(mapping =aes(x= hwy))

ggplot으로 배기량과 연비의 산점도를 본다.  아래의 그래프와 같이 배기량이 클수록 연비가 낮은 분포를 가지고 있다. 

 자동차 등급 별로 데이터를 보았을대,  소형차, 준중형차  종류가  배기량도 적은 대신에 연비가 높았고,,   suv  나   pick-up 트럭 계열은 연비가 낮았다. 

 각 차종별 그래프 산점도 보기 
 ggplot(data= mpg)+
   geom_point( mapping = aes(x=displ, y = hwy, color=class))

  


차량 등급별 사이즈를 구분해서 데이터를 시각화 하기 

 #각 차종별 사이즈를 분리해서 보기  
 ggplot(data= mpg)+
   geom_point( mapping = aes(x=displ, y = hwy, size=class, color=class))  
## Warning: Using size for a discrete variable is not advised.


차량등급별로 기호로 나누어서 데이터 산점도를 보았다. 어느 것이 분석 하기 좋은지는 봐야 알것 같다.  

 #차량 등급별 기호로 분리 해서 보기   
 ggplot(data= mpg)+
   geom_point( mapping = aes(x=displ, y = hwy, shape=class))
## Warning: The shape palette can deal with a maximum of 6 discrete values because
## more than 6 becomes difficult to discriminate; you have 7. Consider
## specifying shapes manually if you must have them.
## Warning: Removed 62 rows containing missing values (geom_point).

차량 등급별로 연비 분포를 나누었다.   차량 종류별로 분포의 차이가 나타난다. 

# 연비 분포 보기 
 ggplot(data= mpg)+
   geom_point( mapping = aes(x=displ, y = hwy)) +
   facet_wrap(~class, nrow =2)

  결국 경제성 있는 차량을 선택 하는 것인데,  suv와 pic-up은 배기량이 낮아도 연비가 않좋다는 것을 알수 있고,  compact은 배기량이,  낮고 연비가 않 좋은 것으로 나타났다. 

 ggplot2의 창시자인 해들리 위컴은 우리가 이해하기 쉽고,  실제에도 많이 쓰일 만한 데이터를 분석 하였다. 


css cheat sheet 클래스 선택자, margin(마진), display , center 조정 간단한 구성 요소

 앞에서는 html의 간단한 sheet를 소개 하였습니다.   html은  주로 골격을 나타나는 것이라, 디자인을 하는데는 css로 하여야 합니다.  아래 코드와 같이 css 관련 하여 매우 간단하게 코딩 하겠습니다.  body 부분의 css 코딩  ...