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))


댓글 없음:

댓글 쓰기

[주식 클로드 자동매매 프로젝트] 제2편. 데이터 인프라 구축 — 모델보다 데이터가 먼저다

 머신러닝 모델을 이야기하기 전에, 그 모델이 먹는 데이터가 어디서 어떻게 왔는지부터 정직하게 밝혀야 한다. 이 프로젝트에서 가장 많은 시간이 들어간 부분은 화려한 모델 튜닝이 아니라, "내가 정말 그 데이터를 갖고 있는가"를 확인하...