R 초급 vector 및 bar graph

   R 초급자가 맨 처음에 R을 접할 때,   Data.frame하고,  vector하고 매우 헤깔려 한다.   그리고, 데이터 유형도 헤깔리는 경우도 있다.    나도 맨 처음 시작 하였을때,  그러 했다. 



    

질문의 내용은 아래와 같다.. 



r프로그래밍 문제점 좀 알려주세여ㅜ 제가 3_9세 어린이의 미디어 이용률.csv를 열어서 col.data를 media.data로 바꾸려고 하는데 자꾸 > media.data<- data.set[,col_data] Error in `[.data.frame`(data.set, , col_data) : undefined columns selected > str(media.data) Error in str(media.data) : 객체 'media.data'를 찾을 수 없습니다 이렇게 뜨네요ㅜㅜ 제발 알려주세요ㅜㅜ 부탁드립니다.

 vector(벡터)

   r의 기본 구조를 나타내는 것이다.    대표적으로   1부터 5까지 표현 하려면, 아래와 같이 한다.   벡터 데이터는 데이터 유형과, 길이와,  속성을 고려 하여야 한다. 
 
#  숫자형 벡터
  x <- c(1, 2, 3, 4, 5)

# 문자형 벡터
 y <- c("a", "b", "c", "d")

 일단 패키지를 로딩 한다.   원리는 install.pacakages("dplyr")로 설치 해야 하는데,  패키지가 없으면 설치하고,  있으면 로딩 하는 함수를 만들었다.   처음 접하시는 분은 이것이 오히려 더 쉬울 수 있다. 

# 패키지가 없으면 설치하고, 있으면 불러오기 
  pkg_fun <- function(pkg) {
    if(!require(pkg, character.only = TRUE)) {
      install.packages(pkg)
      library(pkg, character.only = TRUE)  
    }
  }  


  pkg_fun("rio")
  pkg_fun("dplyr")
  pkg_fun("ggplot2")
데이터 셋 불러오는 것은 편의 상  클라우드에 있는 데이터 셋을 불러 왔다. 
# 라이브러리 불러오기 

library(readxl)
library(httr)

# 파일을 불러오는 path를 url 변수로 정의      

url = "https://docs.google.com/uc?export=download&id=1F6ptnOt0tKBgvt4REP1Vc0x7v1ecbW_o"
GET(url, write_disk(tf <- tempfile(fileext = ".xlsx")))
data.set <- read_excel(tf, 1L)      

str(data.set)
## tibble [10 × 2] (S3: tbl_df/tbl/data.frame)
##  $ 항목  : chr [1:10] "텔레비전(스마트 TV+일반 TV)" "스마트 TV" "일반 TV" "스마트폰" ...
##  $ 이용률: num [1:10] 90.1 79.7 14.3 82.8 62.6 41.6 23.4 17.7 1.3 1.1
 질문자님께서는 vector를 만드셨다.  vector를 만드신 다음에,  그 벡터를 데이터 프레임에 적용하려 하였는데,  에러가 발생 하였다. 

# vector를 만들기 보다는 아래와 같이 가져오는 것을 권장 함  
    col_data <- c("텔레비전(스마트 TV+일반 TV)",
                  "스마트 TV",
                  "일반 TV",
                  "스마트폰",
                  "태블릿 PC",
                  "컴퓨터",
                  "인공지능 스피커",
                  "게임 콘솔",
                  "가상현실 기기",
                  "아무것도 이용하지 않는다"
    )
   col_data

media.data<- data.set[,col_data]     그래프를 그리시려고,  데이터 프레임에 있는 항목을 가져오시려다가 에러가 발생 하였다. 

이것은  [] 중괄호 의 사용규칙은  df[,"필드명"]을 쓰는것이 원칙 이다. 

# Data.frame의 필드 이름을 넣어야 한다.    
    media.data <- data.set[,"항목"]  

  # Vector  이름을 넣으면 data.frame의 필드 이름을 넣으라고 한다. 
    media.data 
##  [1] "텔레비전(스마트 TV+일반 TV)" "스마트 TV"                  
##  [3] "일반 TV"                     "스마트폰"                   
##  [5] "태블릿 PC"                   "컴퓨터"                     
##  [7] "인공지능 스피커"             "게임 콘솔"                  
##  [9] "가상현실 기기"               "아무것도 이용하지 않는다
 
media.data를 가져오려면, 위와 같이 data.set[,"항목"]으로 바꾸시는 것이 좋다. 

그리고 그래프를 그리려면,  아래와 같이 하는 것이 좋다. 
data.set$이용율은  "$" 서브세팅 연산자로  data.frame의 필드를 불러울때 쓰는 것이다. 
barplot의  그래프를 그리려면 숫자형으로 해야 한다.  
  # 그래프 그리는 쉬운 basic
    barplot(height=data.set$이용률, names=media.data)


  여기에서 그래프를 그릴 때,  좀 더 보기 좋게 그리는 방법이 있다.  ggplot2를 이용하면 아래와 같이 보기 좋은 그래프가 그려 진다.       

# ggplot2 패키지를 이용하는 방법
    data.set %>% 
      group_by(항목) %>% 
      ggplot(aes(항목, 이용률, fill = 항목)) +
      geom_bar(stat = "identity")+
      theme_bw() +
      theme(axis.text.x=element_text(angle=90, hjust=1))


댓글 없음:

댓글 쓰기

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

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