a <- 1
a
b <- 3.589
b
a + b
a*b
4/b
var1 <- c(1,2,5,7,8) # 숫자 다섯개로 구성된 변수 생성
var1
var2 <- c(1:100) # 1~100까지 연속값으로 생성
var2
var3 <- seq(1,5)
var3
var4 <- seq(1, 100, by=2) # 1~100 사이 홀수만 생성
var4
var5 <- seq(2, 100, by=2) # 1~100 사이 짝수
var5
var1 + 2
var1
var2 <- c(1,2,3,4,5)
var2
var1 + var2
str1 <- 'a'
str1
str2 <- 'text'
str2
str3 <- 'Hello World!'
str3
str4 <- c('a','b','c')
str4
#"a" "b" "c"
str5 <- c('hello!','World','is','Good!')
str5
str1 + 1
함수
값을 넣으면 특정한 기능을 수행해 처음과 다른 값을 출력하는 수
-> 입력을 받아서 출력을 내는 수
x <- c(1,2,3)
x
mean(x) # 평균 함수
max(x) # 최대값 함수
min(x) # 최소값 함수
str5
paste(str5, collapse = ',') # 쉼표를 구분자로 단어들을 하나로 합치기
x
x_mean <- mean(x)
x_mean
install.packages('ggplot2') # 패키지 설치 함수
library(ggplot2) # 패키지 로드 함수
x <- c('a','a','b','c')
x
qplot(x)
qplot(data=mpg, x=hwy)
qplot(data=mpg, x=cty)
qplot(data=mpg, x=drv, y=cty)
mpg
qplot(data=mpg, x=drv, y=cty, geom='line') # 선그래프 형태로 출력
qplot(data=mpg, x=drv, y=hwy, geom='boxplot', colour = drv)
?qplot
english <- c(90,80,60,70) # 영어 점수 변수 생성
english
math <- c(50,60,100,20) # 수학 점수 변수 생성
math
df_midterm <- data.frame(english, math) # 데이터 프레임 생성 함수
df_midterm
class <- c(1,1,2,2)
df_midterm <- data.frame(english, math, class)
df_midterm
mean(df_midtermenglish) # df_midterm 의 영어 평균 mean(df_midtermmath)
install.packages('readxl')
library(readxl)
df_exam <- read_excel('excel_exam.xlsx')
df_exam
mean(df_exam$math)
df_exam <- read_excel('C:/R_Project_bigdata/excel_exam.xlsx')
df_exam
df_exam_novar <- read_excel('excel_exam_novar.xlsx', col_names = F)
df_exam_novar
df_exam_sheet <- read_excel('excel_exam_sheet.xlsx', sheet=3)
df_exam_sheet
CSV
df_csv_exam <- read.csv('csv_exam.csv')
df_csv_exam
df_midterm <- data.frame(english = c(90,87,60,70),
math = c(50,60,100,20))
df_midterm
write.csv(df_midterm, file='df_midterm_pass.csv')
head() : 데이터의 앞 부분 출력
tail() : 데이터의 뒷 부분 출력
View() : 뷰어 창에서 데이터 확인
dim() : 데이터 차원 출력
str() : 데이터의 속성 출력
6*. summary() : 요약통계량 출력
exam <- read.csv('csv_exam.csv')
head(exam) # 앞에서부터 6행까지 출력
head(exam, 10) # 앞에서부터 10행까지 출력
tail(exam) # 뒤에서부터 6행까지 출력
tail(exam, 10) # 뒤에서부터 10행까지 출력
dim(exam)
str(exam)
summary(exam)
mpg <- as.data.frame(ggplot2::mpg)
head(mpg)
tail(mpg)
str(mpg)
summary(mpg)
install.packages('dplyr')
library(dplyr)
df_raw <- data.frame(var1 = c(1,2,1),
var2 = c(2,3,2))
df_raw
데이터 프레임의 변수를 변경하거나 형식을 바꾸는 경우에는
복사본을 생성한 다음 생성된 복사본을 수정한다.
df_new <- df_raw # 복사본 생성
df_new
df_new <- rename(df_new, v2 = var2)
df_new
mpg <- as.data.frame(ggplot2::mpg)
mpg_new <- mpg
mpg_new
mpg_new <- rename(mpg_new, city = cty)
mpg_new <- rename(mpg_new, highway = hwy)
head(mpg_new)
df <- data.frame(var1=c(4,3,8),
var2=c(2,6,1))
df
dfvar1 + df$var2
df
dfvar1 + df$var2) / 2
df
mpgcty + mpg$hwy) / 2
head(mpg)
mean(mpg$total)
summary(mpg$total)
hist(mpg$total)
mpgtotal >= 20,'수입','수입X')
tail(mpg, 15)
table(mpg$test) # 수입 가능한 차량 빈도표 생성
qplot(mpg$test)
'''
A - 30 이상
B - 20 ~ 29
C - 20 미만
'''
mpgtotal >= 30, 'A',
ifelse(mpg$total >= 20, 'B','C'))
head(mpg,20)
table(mpg$grade)
qplot(mpg$grade)
filter() : 행 추출
select() : 열 추출
arrange() : 정렬
mutate() : 변수 추가
summarise() : 통계치 산출
group_by() : 집단별로 나누기
left_join() : 데이터 합치기 (열 기준)
bind_rows() : 데이터 합치기 (행 기준)
library(dplyr)
exam <- read.csv('csv_exam.csv')
exam
exam %>% filter(class == 1)
exam %>% filter(class == 2)
exam %>% filter(class != 1)
exam %>% filter(math > 50)
exam %>% filter(english >= 80)
exam %>% filter(class == 1 & math >= 50)
exam %>% filter(math >= 90 | english >= 90)
exam %>% filter(class==1 | class==3 | class==5)
exam %>% filter(class %in% c(1,3,5))
exam
class1 <- exam %>% filter(class == 1)
mean(class1$math)
< : 작다
<= : 작거나 같다
== : 같다
!= : 같지 않다
| : 또는
& : 그리고
%in% : 매칭 확인 , 포함 연산자
/ : 나누기
^, ** : 제곱
%/% : 나눗셈의 몫
%% : 나눗셈의 나머지
exam %>% select(math)
exam %>% select(class, math, english)
exam %>% select(-math)
exam %>% select(-math, -science)
exam %>% filter(class == 1) %>% select(english)
exam %>%
filter(class==1) %>%
select(english) %>%
tail
exam %>% arrange(math)
exam %>% arrange(desc(math))
exam %>% arrange(class, math)
a <- exam %>%
mutate(total = math + english + science) %>%
head
exam
exam %>%
mutate(total = math + english + science,
mean = (math + english + science)/3) %>%
head
exam %>%
mutate(test = ifelse(science >= 60, 'pass','fail')) %>%
head
exam <- read.csv('csv_exam.csv')
exam
exam %>%
mutate(total= math + english + science) %>%
arrange(total) %>%
head
exam %>% summarise(mean_math = mean(math))
exam %>%
group_by(class) %>% # class 별로 분리
summarise(mean_math = mean(math)) # 각 집단별 평균 산출
exam %>%
group_by(class) %>%
summarise(mean_math = mean(math), # 수학 평균
sum_math = sum(math), # 수학 총점
median_math = median(math), # 수학 중앙값
student = n()) # 학생 수
mean() : 평균
sd() : 표준편차 ( 평균에 대한 오차 )
sum() : 합계
median() : 중앙값
min(), max() : 최소값, 최대값
n() : 빈도
a <- mpg %>%
group_by(manufacturer, model) %>%
summarise(mean_cty = mean(cty)) %>%
arrange(desc(mean_cty)) %>%
head(10)
mpg %>%
group_by(manufacturer) %>%
filter(class=='suv') %>%
mutate(total = (cty+hwy)/2) %>%
summarise(mean_total = mean(total)) %>%
arrange(desc(mean_total)) %>%
head(5)
test1 <- data.frame(id = c(1,2,3,4,5),
midterm = c(60,80,70,90,50))
test2 <- data.frame(id = c(1,2,3,4,5),
final = c(70,83,65,98,80))
test1
test2
total <- left_join(test1, test2, by='id') # id 기준으로 합쳐서 total 에 할당
total

name <- data.frame(class=c(1,2,3,4,5),
teacher=c('kim','lee','park','choi','jung'))
name
exam_new <- left_join(exam, name, by='class')
exam_new
group_a <- data.frame(id = c(1,2,3,4,5),
test = c(60,80,70,90,85))
group_b <- data.frame(id = c(6,7,8,9,10),
test = c(70,83,65,95,80))
group_a
group_b
group_all <- bind_rows(group_a, group_b)
group_all
