SlideShare una empresa de Scribd logo
1 de 45
Data Designer
Week 02 - 1
R basics - 2
꿈꾸는데이터디자이너 시즌2
반복문과 조건문
꿈꾸는데이터디자이너 시즌2
for(var in vector)){
code
}
반복문 for
var = vector[1]
code
var = vector[2]
code
var = vector[n]
code
꿈꾸는데이터디자이너 시즌2
for(i in c(1,2,3)){
print(i)
}
반복문 for
i = 1
print(i)
i = 2
print(i)
i = 3
print(i)
꿈꾸는데이터디자이너 시즌2
for(m in month.name){
print(m)
}
반복문 for
m = 'January'
print(m)
m = 'February'
print(m)
m = 'December'
print(m)
꿈꾸는데이터디자이너 시즌2
if(condition){
code for true
} else {
code for false
}
조건문 if
condition
code for
true
code for
false
true false
꿈꾸는데이터디자이너 시즌2
조건문 if
condition1
code1
true false
if(condition1){
code 1
} else if(condition2) {
code 2
} else {
code 3
}
condition2
true false
code2 code3
꿈꾸는데이터디자이너 시즌2
if(5 > 4){
print('this is true')
} else {
print('this is false')
}
조건문 if
if(3 > 4){
print('this is true')
} else {
print('this is false')
}
꿈꾸는데이터디자이너 시즌2
비교 연산자
5 > 4 #true
5 >= 4 #true
4 < 3 #false
4 <= 3 #false
4 == 4 #true
4 != 4 #false
'May' %in% month.name #true
5 %in% 10:20 #false
꿈꾸는데이터디자이너 시즌2
R에서는 연산자도 함수이기 때문에
함수처럼 사용하거나 검색할 수 있습니다
?'%in%'
?'!='
?'+'
꿈꾸는데이터디자이너 시즌2
letters 벡터와 for, if문을 이용해서
c('a','e','I','o','u') 인 경우에만 출력하는
코드를 작성해보세요
print() 함수와
%in% 연산자를 이용해보세요
꿈꾸는데이터디자이너 시즌2
반복문과 조건문
예제로 알아보기
꿈꾸는데이터디자이너 시즌2
score_df = data.frame(
math = c(40, 70, 80),
korean = c(50, 60, 70),
english = c(30, 40, 50),
art = c('A','A','C')
)
40 50 30 A
70 60 40 A
80 70 50 C
1강 때 사용했던 score_df 데이터
꿈꾸는데이터디자이너 시즌2
미술점수를 '숫자'로 환산하고
각 과목별로 평균을 계산해보자
꿈꾸는데이터디자이너 시즌2
score_df$art
[1] A A C
Levels: A C
c(100,100,60)
A
B
C
100
80
60
꿈꾸는데이터디자이너 시즌2
for(학점 in 미술점수){
학점이 A라면{
점수를 100점으로
} 학점이 B라면 {
점수를 80점으로
} 나머지 {
점수를 60점으로
}
}
논리 구조
꿈꾸는데이터디자이너 시즌2
논리 구조
방금 전 페이지의 구조대로
print()함수를 이용해서
숫자로 된 점수를 출력하는 코드를 작성해보자
꿈꾸는데이터디자이너 시즌2
자료 담기
미술점수(A,B,C)
미술점수(숫자) c(__,__,__)
c(??,??,??)
꿈꾸는데이터디자이너 시즌2
벡터를 겹쳐서 자료를 저장하자
꿈꾸는데이터디자이너 시즌2
c(1,2,3,c(4,5))
c(1,2,3,4,5)
는
와
동일하다
꿈꾸는데이터디자이너 시즌2
a = 10
b = c()
b의 결과물
b = c(b, a)
b = c(b, a)
b = c(b, a)
c()
c(10)
c(10,10)
c(10,10,10)
꿈꾸는데이터디자이너 시즌2
숫자로 된 미술점수가 들어갈 빈 벡터를 만들자
art_score = c()
꿈꾸는데이터디자이너 시즌2
for(art in score_df$art){
if(art == 'A'){
art_score = c(art_score, 100)
} else if(art == 'C'){
art_score = c(art_score, 60)
} else {
art_score = c(art_score, 80)
}
}
꿈꾸는데이터디자이너 시즌2
제대로 들어왔다면
art_score
[1] 100 100 60
꿈꾸는데이터디자이너 시즌2
score_df 데이터 프레임의 미술점수에
숫자 점수가 담긴 벡터를 덮어씌우자
score_df$art = art_score
40 50 30 A
70 60 40 A
80 70 50 C
40 50 30 100
70 60 40 100
80 70 50 60
꿈꾸는데이터디자이너 시즌2
각 과목별로 평균을 계산해보자
꿈꾸는데이터디자이너 시즌2
names()
dim()
data.frame에 사용하면
열 이름들을 벡터로 출력한다
data.frame에 사용하면
행의 개수와 열의 개수를 벡터로 출력한다
names(score_df)
dim(score_df)
꿈꾸는데이터디자이너 시즌2
for(index in 1:dim(score_df)[2]){
print(
mean(score_df[, index])
)
}
score_df의 열 개수
index번째 열의 평균을 구한다
mean()함수는 벡터에만 쓸 수 있어요
꿈꾸는데이터디자이너 시즌2
score_mean = c()
for(index in 1:dim(score_df)[2]){
mean_value = mean(score_df[, index])
score_mean = c(score_mean, mean_value)
}
평균데이터를 활용하기 위해
빈 벡터에 평균값을 저장하자
꿈꾸는데이터디자이너 시즌2
어떤 과목의 평균값인지 쉽게 알 수 있도록
score_df의 name을 덮어 씌우자
names(score_mean) = names(score_df)
63.3333 60.0000 40.0000 86.66667
꿈꾸는데이터디자이너 시즌2
이 모든 과정을 한 줄로 끝내는 방법
sapply(score_df, mean)
꿈꾸는데이터디자이너 시즌2
iris 데이터에서
(반복문을 이용해서)
1~4번째 열의 평균을 구해보자
꿈꾸는데이터디자이너 시즌2
반복문과 조건문
예제로 알아보기 2
꿈꾸는데이터디자이너 시즌2
read.csv()
as.character()
csv파일을 불러온다
chr가 아닌 벡터를 chr로 변경한다
꿈꾸는데이터디자이너 시즌2
temperature = read.csv('weather_data.csv',
fileEncoding = 'UTF-8')
데이터 파일을 프로젝트 폴더에 두고
다음 코드를 실행시킨다
str(temperature) 로 살펴보면
location과 date가 factor로 되어있다
꿈꾸는데이터디자이너 시즌2
사실 chr로 변경시키지 않아도 코드는 잘돌아가지만
location과 date를 chr로 변경시키자
temperature$location = as.character(temperature$location)
temperature$date = as.character(temperature$date)
꿈꾸는데이터디자이너 시즌2
seoul_temp =
temperature[temperature$location == '서울', 'temp']
서울의 온도만 벡터로 저장하자
꿈꾸는데이터디자이너 시즌2
barplot(seoul_temp)
꿈꾸는데이터디자이너 시즌2
서울의 온도가 서울의 평균 기온보다 높으면 '#821122'
평균 기온보다 낮으면 '#cccccc'
색상을 나타내는 벡터를 만들어서 막대 그래프에 반영해보자
꿈꾸는데이터디자이너 시즌2
빈 벡터 만들기
for(temp in 서울의 온도){
만약 temp가 서울의 평균온도보다 크다면 {
비어있던 벡터 = c(비어있던 벡터, '#821122')
} 아니라면 {
비어있던 벡터 = c(비어있던 벡터, '#cccccc')
}
}
아래 구조를 이용해서 색상을 담은 벡터를 만들어보세요
꿈꾸는데이터디자이너 시즌2
seoul_color = c()
for(temp in seoul_temp){
if(temp > mean(seoul_temp)){
seoul_color = c(seoul_color, '#821122')
}else{
seoul_color = c(seoul_color, '#cccccc')
}
}
정답
꿈꾸는데이터디자이너 시즌2
barplot(seoul_temp, col = seoul_color, border = NA)
꿈꾸는데이터디자이너 시즌2
코드 저장하실 때는
파일명.R로 저장해주세요
콘솔의 내용은 저장되지 않습니다
종료할 때 뜨는 save workspace image에서
save를 선택하시면 Environment에 존재하는 변수들이 저장됩니다
꿈꾸는데이터디자이너 시즌2
과제 -
1) 대구에 대해서도 위에서 했던 것과 동일한 그래프를 그려보세요
2) (심화) sapply 함수는 어떻게 돌아가고 있을까요
[시즌2, week3] R Basic

Más contenido relacionado

La actualidad más candente

꿈데디 D3.js강의 6주차
꿈데디 D3.js강의 6주차꿈데디 D3.js강의 6주차
꿈데디 D3.js강의 6주차Songyi Lim
 
[Week13] D3.js_Bar Chart
[Week13] D3.js_Bar Chart[Week13] D3.js_Bar Chart
[Week13] D3.js_Bar Chartneuroassociates
 
[week16] D3.js (Scale & axis)
[week16] D3.js (Scale & axis)[week16] D3.js (Scale & axis)
[week16] D3.js (Scale & axis)neuroassociates
 
꿈데디 D3.js강의 2주차
꿈데디 D3.js강의 2주차꿈데디 D3.js강의 2주차
꿈데디 D3.js강의 2주차Songyi Lim
 
세그먼트 트리 느리게 업데이트하기 - Sogang ICPC Team, 2020 Winter
세그먼트 트리 느리게 업데이트하기 - Sogang ICPC Team, 2020 Winter세그먼트 트리 느리게 업데이트하기 - Sogang ICPC Team, 2020 Winter
세그먼트 트리 느리게 업데이트하기 - Sogang ICPC Team, 2020 WinterSuhyun Park
 
Lazy Propagation on Segment Trees - Sogang ICPC Team, 2019
Lazy Propagation on Segment Trees - Sogang ICPC Team, 2019Lazy Propagation on Segment Trees - Sogang ICPC Team, 2019
Lazy Propagation on Segment Trees - Sogang ICPC Team, 2019Suhyun Park
 
퍼시스턴트 세그먼트 트리 - Sogang ICPC Team, 2020 Winter
퍼시스턴트 세그먼트 트리 - Sogang ICPC Team, 2020 Winter퍼시스턴트 세그먼트 트리 - Sogang ICPC Team, 2020 Winter
퍼시스턴트 세그먼트 트리 - Sogang ICPC Team, 2020 WinterSuhyun Park
 
안드로이드스터디 7
안드로이드스터디 7안드로이드스터디 7
안드로이드스터디 7jangpd007
 
Persistent Segment Tree - Sogang ICPC Team, 2019
Persistent Segment Tree - Sogang ICPC Team, 2019Persistent Segment Tree - Sogang ICPC Team, 2019
Persistent Segment Tree - Sogang ICPC Team, 2019Suhyun Park
 
2012 Dm A0 04 Pdf
2012 Dm A0 04 Pdf2012 Dm A0 04 Pdf
2012 Dm A0 04 Pdfkd19h
 
정수론적 알고리즘 - Sogang ICPC Team, 2020 Winter
정수론적 알고리즘 - Sogang ICPC Team, 2020 Winter정수론적 알고리즘 - Sogang ICPC Team, 2020 Winter
정수론적 알고리즘 - Sogang ICPC Team, 2020 WinterSuhyun Park
 
Centroid Decomposition - Sogang ICPC Team, 2019
Centroid Decomposition - Sogang ICPC Team, 2019Centroid Decomposition - Sogang ICPC Team, 2019
Centroid Decomposition - Sogang ICPC Team, 2019Suhyun Park
 
Higher order procedure2 with conventional interface
Higher order procedure2 with conventional interface Higher order procedure2 with conventional interface
Higher order procedure2 with conventional interface fromitive
 
Fast Fourier Transform - Sogang ICPC Team, 2019
Fast Fourier Transform - Sogang ICPC Team, 2019Fast Fourier Transform - Sogang ICPC Team, 2019
Fast Fourier Transform - Sogang ICPC Team, 2019Suhyun Park
 
이산수학 C1 프로젝트 4
이산수학 C1 프로젝트 4이산수학 C1 프로젝트 4
이산수학 C1 프로젝트 4pkok15
 

La actualidad más candente (18)

꿈데디 D3.js강의 6주차
꿈데디 D3.js강의 6주차꿈데디 D3.js강의 6주차
꿈데디 D3.js강의 6주차
 
[Week13] D3.js_Bar Chart
[Week13] D3.js_Bar Chart[Week13] D3.js_Bar Chart
[Week13] D3.js_Bar Chart
 
[week16] D3.js (Scale & axis)
[week16] D3.js (Scale & axis)[week16] D3.js (Scale & axis)
[week16] D3.js (Scale & axis)
 
[Week12] D3.js_Basic2
[Week12] D3.js_Basic2[Week12] D3.js_Basic2
[Week12] D3.js_Basic2
 
[week12] D3.js_Basic
[week12] D3.js_Basic[week12] D3.js_Basic
[week12] D3.js_Basic
 
꿈데디 D3.js강의 2주차
꿈데디 D3.js강의 2주차꿈데디 D3.js강의 2주차
꿈데디 D3.js강의 2주차
 
세그먼트 트리 느리게 업데이트하기 - Sogang ICPC Team, 2020 Winter
세그먼트 트리 느리게 업데이트하기 - Sogang ICPC Team, 2020 Winter세그먼트 트리 느리게 업데이트하기 - Sogang ICPC Team, 2020 Winter
세그먼트 트리 느리게 업데이트하기 - Sogang ICPC Team, 2020 Winter
 
3D Graphics 101
3D Graphics 1013D Graphics 101
3D Graphics 101
 
Lazy Propagation on Segment Trees - Sogang ICPC Team, 2019
Lazy Propagation on Segment Trees - Sogang ICPC Team, 2019Lazy Propagation on Segment Trees - Sogang ICPC Team, 2019
Lazy Propagation on Segment Trees - Sogang ICPC Team, 2019
 
퍼시스턴트 세그먼트 트리 - Sogang ICPC Team, 2020 Winter
퍼시스턴트 세그먼트 트리 - Sogang ICPC Team, 2020 Winter퍼시스턴트 세그먼트 트리 - Sogang ICPC Team, 2020 Winter
퍼시스턴트 세그먼트 트리 - Sogang ICPC Team, 2020 Winter
 
안드로이드스터디 7
안드로이드스터디 7안드로이드스터디 7
안드로이드스터디 7
 
Persistent Segment Tree - Sogang ICPC Team, 2019
Persistent Segment Tree - Sogang ICPC Team, 2019Persistent Segment Tree - Sogang ICPC Team, 2019
Persistent Segment Tree - Sogang ICPC Team, 2019
 
2012 Dm A0 04 Pdf
2012 Dm A0 04 Pdf2012 Dm A0 04 Pdf
2012 Dm A0 04 Pdf
 
정수론적 알고리즘 - Sogang ICPC Team, 2020 Winter
정수론적 알고리즘 - Sogang ICPC Team, 2020 Winter정수론적 알고리즘 - Sogang ICPC Team, 2020 Winter
정수론적 알고리즘 - Sogang ICPC Team, 2020 Winter
 
Centroid Decomposition - Sogang ICPC Team, 2019
Centroid Decomposition - Sogang ICPC Team, 2019Centroid Decomposition - Sogang ICPC Team, 2019
Centroid Decomposition - Sogang ICPC Team, 2019
 
Higher order procedure2 with conventional interface
Higher order procedure2 with conventional interface Higher order procedure2 with conventional interface
Higher order procedure2 with conventional interface
 
Fast Fourier Transform - Sogang ICPC Team, 2019
Fast Fourier Transform - Sogang ICPC Team, 2019Fast Fourier Transform - Sogang ICPC Team, 2019
Fast Fourier Transform - Sogang ICPC Team, 2019
 
이산수학 C1 프로젝트 4
이산수학 C1 프로젝트 4이산수학 C1 프로젝트 4
이산수학 C1 프로젝트 4
 

Más de neuroassociates

Bloter 넥스트 저널리즘 스쿨 강의자료
Bloter 넥스트 저널리즘 스쿨 강의자료Bloter 넥스트 저널리즘 스쿨 강의자료
Bloter 넥스트 저널리즘 스쿨 강의자료neuroassociates
 
[week8] 데이터읽어주는남자
[week8] 데이터읽어주는남자[week8] 데이터읽어주는남자
[week8] 데이터읽어주는남자neuroassociates
 
[week7] 데이터읽어주는남자
[week7] 데이터읽어주는남자[week7] 데이터읽어주는남자
[week7] 데이터읽어주는남자neuroassociates
 
[week6] 데이터읽어주는남자
[week6] 데이터읽어주는남자[week6] 데이터읽어주는남자
[week6] 데이터읽어주는남자neuroassociates
 
[Week5]데이터읽어주는남자
[Week5]데이터읽어주는남자[Week5]데이터읽어주는남자
[Week5]데이터읽어주는남자neuroassociates
 
[Week4]데이터읽어주는남자
[Week4]데이터읽어주는남자[Week4]데이터읽어주는남자
[Week4]데이터읽어주는남자neuroassociates
 
[Week3]데이터읽어주는남자
[Week3]데이터읽어주는남자[Week3]데이터읽어주는남자
[Week3]데이터읽어주는남자neuroassociates
 
[Week2]데이터읽어주는남자
[Week2]데이터읽어주는남자[Week2]데이터읽어주는남자
[Week2]데이터읽어주는남자neuroassociates
 
꿈꾸는 데이터 디자이너 시즌2 교육 설명회 2부
꿈꾸는 데이터 디자이너 시즌2 교육 설명회 2부꿈꾸는 데이터 디자이너 시즌2 교육 설명회 2부
꿈꾸는 데이터 디자이너 시즌2 교육 설명회 2부neuroassociates
 
꿈꾸는 데이터 디자이너 시즌2 교육설명회
꿈꾸는 데이터 디자이너 시즌2 교육설명회꿈꾸는 데이터 디자이너 시즌2 교육설명회
꿈꾸는 데이터 디자이너 시즌2 교육설명회neuroassociates
 
꿈꾸는 데이터 디자이너 1기를 끝내며
꿈꾸는 데이터 디자이너 1기를 끝내며꿈꾸는 데이터 디자이너 1기를 끝내며
꿈꾸는 데이터 디자이너 1기를 끝내며neuroassociates
 
[week14] Getting started with D3.js
[week14] Getting started with D3.js[week14] Getting started with D3.js
[week14] Getting started with D3.jsneuroassociates
 

Más de neuroassociates (18)

Bloter 넥스트 저널리즘 스쿨 강의자료
Bloter 넥스트 저널리즘 스쿨 강의자료Bloter 넥스트 저널리즘 스쿨 강의자료
Bloter 넥스트 저널리즘 스쿨 강의자료
 
[Week20] D3.js_Mapping
[Week20] D3.js_Mapping[Week20] D3.js_Mapping
[Week20] D3.js_Mapping
 
[week8] 데이터읽어주는남자
[week8] 데이터읽어주는남자[week8] 데이터읽어주는남자
[week8] 데이터읽어주는남자
 
[week7] 데이터읽어주는남자
[week7] 데이터읽어주는남자[week7] 데이터읽어주는남자
[week7] 데이터읽어주는남자
 
[week6] 데이터읽어주는남자
[week6] 데이터읽어주는남자[week6] 데이터읽어주는남자
[week6] 데이터읽어주는남자
 
[week9]R_statics
[week9]R_statics[week9]R_statics
[week9]R_statics
 
[week7]R_Wrangling(2)
[week7]R_Wrangling(2)[week7]R_Wrangling(2)
[week7]R_Wrangling(2)
 
[Week5]데이터읽어주는남자
[Week5]데이터읽어주는남자[Week5]데이터읽어주는남자
[Week5]데이터읽어주는남자
 
[Week5]R_scraping
[Week5]R_scraping[Week5]R_scraping
[Week5]R_scraping
 
[Week4]데이터읽어주는남자
[Week4]데이터읽어주는남자[Week4]데이터읽어주는남자
[Week4]데이터읽어주는남자
 
[Week4] Google refine
[Week4] Google refine[Week4] Google refine
[Week4] Google refine
 
[Week3]데이터읽어주는남자
[Week3]데이터읽어주는남자[Week3]데이터읽어주는남자
[Week3]데이터읽어주는남자
 
[Week2]데이터읽어주는남자
[Week2]데이터읽어주는남자[Week2]데이터읽어주는남자
[Week2]데이터읽어주는남자
 
꿈꾸는 데이터 디자이너 시즌2 교육 설명회 2부
꿈꾸는 데이터 디자이너 시즌2 교육 설명회 2부꿈꾸는 데이터 디자이너 시즌2 교육 설명회 2부
꿈꾸는 데이터 디자이너 시즌2 교육 설명회 2부
 
꿈꾸는 데이터 디자이너 시즌2 교육설명회
꿈꾸는 데이터 디자이너 시즌2 교육설명회꿈꾸는 데이터 디자이너 시즌2 교육설명회
꿈꾸는 데이터 디자이너 시즌2 교육설명회
 
꿈꾸는 데이터 디자이너 1기를 끝내며
꿈꾸는 데이터 디자이너 1기를 끝내며꿈꾸는 데이터 디자이너 1기를 끝내며
꿈꾸는 데이터 디자이너 1기를 끝내며
 
[week14] Getting started with D3.js
[week14] Getting started with D3.js[week14] Getting started with D3.js
[week14] Getting started with D3.js
 
[Week10] R graphics
[Week10] R graphics[Week10] R graphics
[Week10] R graphics
 

[시즌2, week3] R Basic