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))
댓글 없음:
댓글 쓰기