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


댓글 없음:

댓글 쓰기

공무 스케줄 AI Agem에 대한 생각

     지금 상황이 아비 규환이다.  어느 부서든 회사가 인수 합병되고 나서  투자를 기획하는 경영기획이 특히 않이 정신이 없고, 우리부서도 전부 미국 필리 조선소로 인원이 나가 있어,  사실상 10년 이상 고기량자는 거의 없다.   우리부서에 남아...