☆ 강의 내용 요약 ☆
ls( ) : 자신이 생성한 변수들을 확인하는 함수
rm( ) : 지정한 객체를 삭제하는 함수
head(x) : 데이터의 앞부분 6개 출력
table( ) : 빈도수를 추출하는 함수
order( ) : 데이터 정렬 함수
rename( ) :컬럼명을 바꾸는 함수
sapply( 데이터, 함수) : 데이터의 각 행, 열에 대한 연산을 계산하는 함수
# exam 자료 활용하기
## df2에 exam 파일 불러오기
getwd()
setwd("c:/r_worksplace/Data")
df2 <- read.csv("csv_exam.csv")
# woman 파일 활용하기
# diamonds 자료 활용하기
#모듈 불러오기
install.packages('ggplot2')
library(ggplot2)
#diamonds 파일을 dia 변수로 지정
dia <- ggplot2::diamonds
(1) 각 커트별로 빈도수 카운트 하기
(2) 각 컬러별 빈도수 카운트 하기
(3) 각 clarity별 빈도수 카운트
(4) cut가 premium인 가격의 평균 값
(5) (4)에서 상위 123위와 하위 123위
- order 함수 부분을 인덱스로 묶지 않으면 ??
order함수의 결과는 해당 인덱스 번호로 나오기 때문에 그 값을 알수 없기때문임.
상위 1,2,3위를 추출하면 그냥 1,2,3번으로 나옴 !
cut이 Premium, VeryGood인 다이아 추출
cut이 Premium, VeryGood, Good인 다이아 추출
* a %in% b : a에서 b가 포함된 자료를 추출
# mtcars 자료 활용하기
# rename 함수 쓰려면 dplry 라이브러리가 필요하다
install.packages("dplyr")
library(dplyr)
*히스토그램이란 ?
- 도수분포표, 값이 어느 구간에 많이 속해있는지 보여줌.
연속된 데이터를 구간별로 나누고, 구간별 빈도수를 시각화한 자료.데이터 분포 특성을 파악하기 좋음
- mpg2에서 x축을 total로 점 히스토그램을 만든것.
* ggplot(데이터프레임, aes(x축 변수, y축 변수, colour=다른색으로 표시 하고 싶은 변수))
* binwidth : x축을 나누는 bin의 너비 설정
* bins : x축을 나누는 bin의 개수 설정
total이 20이상이면 pass, 아니면 fail이 뜨도록 test 컬럼 추가하기
total이 30이상이면 A, 20이상이면 B, 20미만이면 C
mpg2$grade <- ifelse(mpg2$total>=30, "A",
ifelse(mpg2$total>=20, "B", "C"))
class가 suv, compact인 차종의 cty 평균 구하기
# mpg에서 class, cty 컬럼만 추출한 mpg3 생성
mpg3 <- mpg %>% select(class, cty)
# class = suv, compact만 추출
mpg_suv <- mpg3 %>% filter(class=="suv")
mpg_compact <- mpg3 %>% filter(class=="compact")
# cty 평균 구하기
mean(mpg_suv$cty )
mean(mpg_compact$cty )
# midwest 자료 활용하기
# midwest 파일 가져오기
midwest <- ggplot2::midwest
write.csv(midwest, file="midwest.csv")
# rename 함수로 컬럼 이름 변경
midwest <- rename(midwest, total=poptotal, asian=popasian)
# ratio 칼럼 추가 ratio = 아시아인구수/총인구수*100
midwest$ratio <- midwest$asian/midwest$total*100
아시아인구 비율이 평균 이상이면 large, 이하면 small 표시하기
# ratio의 평균 값 지정
m <- mean(midwest$ratio)
midwest$group <- ifelse(midwest$ratio>m, "large", "small")
# exam 자료 활용하기
총점, 평균, 90이상 A, 80이상 B, 70이상 C, 60이상 D, F
# 총점구하기
exam$total = exam$math + exam$english + exam$science
# 평균구하기
exam$avg = exam$total/3
# 등급나누기
exam$grade = ifelse(exam$avg>=90, "A",
ifelse(exam$avg>=80, "B",
ifelse(exam$avg>=70, "C",
ifelse(exam$avg>=60, "D", "F"))))
# 1반의 반, 아이디 수학만 골라서 추출하기
exam %>% filter(class==1) %>%
select (class, id, math)
# 사용자 함수 만들기
#사용자함수
#변수명 <- function(매개변수){
# ......
# ......
# return (값) 괄호 생략 불가
# }
# 90이상이면 A, 80 B, 70 C, 60 D, F를 반환하는 함수 만들기
getGrade<- function( score){
if( score>=90)
return ("A")
else if(score>=80)
return ("B")
else if(score>=70)
return ("C")
else if(score>=60)
return ("D")
else
return("F")
}
# 사용자 함수 활용하기
for (i in 1:20)
exam$grade2[i] = getGrade(exam$avg[i])
사용자 함수로도 등급을 나눌 수 있다 !
짝수, 홀수 구분하는 함수 만들기
isEven <- function(num){
if(num%%2==0)
return (T)
else
return (F)
}
# x1에 1부터 100까지 중 랜덤으로 20개 값 추출
x1 <- data.frame(num=sample(1:100, 20))
# x1$even에 x1 값에 isEven적용한 컬럼 추가
x1$even <- sapply(x1$num, isEven)
4배수면 윤년, 100배수면 윤년X, 400배수는 윤년인 함수 만들기
isLeap <- function(year){
if(year%%4==0 & year%%100!=0 | year%%400==0)
return(T)
else
return(F)
}
# 확인하기
x1 <- data.frame(year=1:2022)
x1$leap <- sapply(x1$year, isLeap)
x1[2022:1990, ]
mysum(n) 1~ n까지 합계를 구해서 반환하는 함수
mysum <- function(limit){
s=0
for(i in 1:limit)
s=s+i
return(s)
}
x1<- data.frame(num=1:1000)
x1$sum <- sapply(x1$num, mysum)
※ 사용한 교재 : 쉽게 배우는 R 데이터 분석 / 저자 : 김영우
'R > 강의복습' 카테고리의 다른 글
[22.08.17] 7일차 텍스트마이닝 / 워드클라우드만들기 (0) | 2022.08.21 |
---|---|
[22.08.16] 6일차 (ggplot, 산포도, 막대그래프, 선그래프, 데이터분석하기, 전처리) (0) | 2022.08.21 |
[22.08.12] 5일차 차트그리기(plot, barplot, pie) (0) | 2022.08.20 |
[22.08.11] 4일차 강의(arrange / filter / select / mutate / summarize / group_by / join / is.na / na.rm) (0) | 2022.08.14 |
[22.08.09] 2일차 강의 (0) | 2022.08.13 |