R 기본 문법
연산
1+1
22+35
532-145
35*6
8/5
8%%5
8%/%5
3**4
9**2
round(1.4) # 반올림
round(1.9)
ceiling(3.6) # 올림
floor(3.6) # 내림
sqrt(16) # 루트 씌워라
log(100) # 로그 e에 100
log(8, base = 2) # 로그 2(밑수)에 8
log2(8)
log10(100) # 로그 10에 100
a <- 100 # a를 100 이라고 하자
b <- 120
a-b
a+b
비교 연산자
10==10
5==7
3 <= 8
5 >= 6
벡터연산
a <- c(1,2,3,4) # 벡터 만들기
b <- c(5,6,7,8)
a+b
a-b
a/b
a*b
c<- c(9,10,11)
a+c
mean(a)
median(a)
max(b)
min(b)
range(a)
var(a) # 분산
sd(a) # 표준편차
sqrt(var(a))
벡터 생성
x <- 1:200 # x 는 위의 숫자 집합이라고 하자
str(x) # 데이터의 구조를을 알려줘
length(x) # 벡터의 길이를 알려줘
seq(1,10,2) # 1부터 10까지, 2 간격으로 넣어줘라
seq(0.1, 1.0, 0.2) # 0.1부터 1.0까지, 0.2 간격으로
seq(3,30,3)
rep(1, times=10) # 1을 10번 해라
rep(1:3, times=3) # 1부터 3까지, 3번
rep(1:5, times=3) # 1부터 5까지를 3번
rep(c(1,3,5), times=3) # 1,3,5를 3번 반복
rep(1:3, each=3) # 1부터 3까지 각각 3번
sample(1:10, 4) # 4개를 랜덤하게 뽑아라
data structure
x1 <- c("hello", "skk student")
x2 <- c("1", "2")
x3 <- c(3,4,5)
str(x1) # 데이터 유형을 보여줘
str(x2) # 1,2는 숫자가 아니라 문자 유형이다.
str(x3) # 3,4,는 숫자 유형.
x2+x3
paste(x1,x2) # 변수를 붙여줘
paste(x3,x2)
x <- c(1,3,5,7,9)
x[1] # x 변수의 1번째 원소를 알려줘
x[4]
x[6]
x[1:3] # 1번째부터 3번째까지 원소를 알려줘
x1 <- c(2,4,6,8,10)
x1[-2] # 2번째 원소는 제외하고 알려줘
x1[-c(3:4)] # 3,4번째 원소는 제외하고 알려줘
bookpage example
bookpage <- c(300,250,330,270,280,310,275,290) # c안의 숫자집합을 bookpage라고 하자
hist(bookpage) # 히스토그램
mean(bookpage)
median(bookpage)
quantile(bookpage) # 1/4 지점, 1/2지점, 3/4지점의 값
IQR(bookpage)
var(bookpage) #분산을 구해라
sd(bookpage) # 표준편차를 구해라 standard deviation
range(bookpage) # 최소값/ 최대값을 구해라
diff(range(bookpage)) # 최소값 최대값의 차이
summary(bookpage) # ()데이터를 요약해줘
row, column
x <- list("Tom", 20, c(850, 890))
x
x[2] # 2번째 원소를 꺼내줘
x[3]
x <- list(name= "Tom", age= 20, toeic= c(850, 890))
x
x$name # x 오브젝트에서 name 을 알려줘
x$age
x$toeic
x1 <- matrix(1:20, nrow=4, ncol=5) # 1부터20까지, 4행5열 만들어
x1
x2 <- matrix(1:20, nrow=4, ncol=5, byrow = T) #행 방향으로
x2
x <- 1:4
y <- 5:8
n1 <- cbind(x,y) #열 방향 column x, y를 합해줘
n1
n2 <- rbind(x,y) #행 방향 row x, y를 합해줘
n2
x1[2,3] # 2행3열은 뭐야
x1[1,] # 1행 모든 숫자
x1[,4] # 4열 모든 숫자
x1[2,1:3] # 2행, 1부터 3열
x1[1,c(2,4)] # 1행, 2열과 4열
x1[,c(2,4)] # 2열 4열에 있는 모든 행
matrix
score <-matrix(c(100,80,75,77,83,90,70,60,95,88,98,82),nrow=4, ncol=3) #c 안의 숫자로 매트릭스 만들어, 4행 3열
score
rownames(score) <- c("세현","규리","나영","민정") #각 행의 이름
colnames(score) <- c("math","english","coding") #각 열의 이름
score
str(score)
정렬
//byrow = T/ False/ True 명령어
x <- c(3,6,4,8,2,9,7)
sort(x) # x 변수를 오름차순으로 정렬해
sort(x, decreasing=T) # 내림차순으로 정렬해
sort(x, decreasing=F) # 오름차순으로 정렬해
score example
score <- matrix(c(100,80,75,77,83,90,70,60,95,88,98,82),nrow=4, ncol=3) #c 안의 숫자로 매트릭스 만들어, 4행 3열
rownames(score) <- c("세현","규리","나영","민정") #각 행의 이름
colnames(score) <- c("math","english","coding") #각 열의 이름
score
str(score) # 스코어 오브젝트의 구조??
score["나영","coding"] # 나영이의 코딩점수
score["민정",] # 민정이의 모든 열 점수
score[,"coding"] # 모든 학생의 코딩 점수를 알려줘
grade <- matrix(c("a","b","c","a","a","d"), nrow = 2, ncol = 3)
grade
rownames(grade) <- c("세현","규리") #각 행의 이름
colnames(grade) <- c("math","toeic","R") #각 열의 이름
seq(10,100,10)
score <- matrix(seq(10,100,10),nrow=5, ncol=2)
rownames(score) <- c(1:5) #각 행의 이름
colnames(score) <- c("소연","온유")
Soyeon <- c(10,20,30,40,50)
Ohnyou <- c(60,70,80,90,100)
score <- cbind(Soyeon, Ohnyu)
score
apply(score,1,sum) # 각 행의 sum 을 구해
apply(score,1,mean) # 각 행의 mean 을 구해
apply(score,2,sum) # 각 열의 sum 을 구해
apply(score,2,mean) # 각 열의 mean을 구해
데이터 프레임
x1 <- c(1,2,3,4)
x2 <- c(90,80,70,60)
a <- data.frame(x1,x2) # x1,x2 로 이루어진 데이터프레임 만들어라
a
str(a) # a의 구조는??
dim(a) # 4행 2열의 데이터프레임
colSums(a) # 열에 있는 수를 sum 해라
colMeans(a) # 열에 있는 수 평균을 구해라
rowSums(a) # 행에 있는 수를 sum 하라
rowMeans(a) # 행에 있는 수 평균을 구해라
name <- c("유민","윤주","일범","효준") # c 안의 이름을 name 안에
age <- c(19,22,20,25) # c 안에 숫자를 age 안에
major <- c("문헌","문헌","융합","사회") # c 안의 전공을 major에
r.class <- data.frame(name, age,major)
# name, age,major으로 이루어진 데이터프레임(행렬) 만들어줘
r.class
str(r.class)
View(r.class) # 새 창에 데이터
r.class[2,] # 2행, 모든 열을 보여줘
r.class[,"major"] # 모든 행, major 열을 보여줘
r.class$major # r.class 데이터의 major 변수를 보여줘
열 추가
r.class$toeic <- c(900, 910, 920, 930)
r.class
sw <- (list("승원", 24, "글경", 950)) # 추가하려는 리스트
r.class <- rbind(r.class,sw) #rbind 행을 합해줘
r.class
r.class$age <- NULL # age 열 삭제하기
name <- c("윤혁","지운","재홍","채윤","수민","대우") # 문자벡터
bloodtype <- c("a","b","o","ab","o","a") # 문자벡터
BT <- data.frame(name, bloodtype)
# 이름, 혈액형으로 데이터 프레임을 만들어라
BT
table(BT) # blood type으로 빈도표를 만들어줘
major <- c("컬쳐","경영","데융","문헌","수학","글경")
BT$major <- c("컬쳐","경영","데융","문헌","수학","글경")
BT
내장 데이터
View(cars)
str(cars) # 구조: 데이터프레임
dim(cars)
names(cars) # 각 변수의 이름??
mean(cars$speed)
mean(cars$dist)
hist(cars$speed)
plot(cars$speed, cars$dist) # 산점도
abline(cars$speed, cars$dist, col="red") # 데이터에 기반한 직선(회귀선)
state.x77 # 내장데이터, 매트릭스
View(state.x77) #state.x77를 별도의 탭에서 보여줘
dim(state.x77) # 몇행 몇열?
head(state.x77) # 맨위에 6줄
names(state.x77) # 매트릭스라 안보임. df로 변환해줘야 함
class(state.x77) # 데이터 형태 알려줘
state <- data.frame(state.x77)
# state.x77을 데이터프레임 형태로 변환해서 state 이라고 저장해줘
names(state) # 변수 이름은 뭐야?(열에 해당되는 변수)
colMeans(state) # 모든 열의 평균값
mean(state$Income) # 미국 주의 소득의 평균
max(state$Income) # 소득이 가장 높은 주의 소득?
min(state$Income)
str(state)
plot(state$HS.Grad, state$Income)
abline(state$HS.Grad, state$Income, col="red")
조건문
if else: 가장 많이 쓰이는 명령어
a <- 10
b <- 9
if(a>5 & b> 10){
print(a+b)
} else {
print(a-b)
}
if(a>5 & b> 10) {print(a+b)} else {print(a-b)}
score <- 75
if(score >= 90) {
grade <- "A"
} else if (score >= 80) {
grade <- "B"
} else if (score >= 70) {
grade <- "C"
} else {
grade <- "D"
}
grade
for문
for (i in list)
{명령어}
for(i in 1:10){
print(i)
}
for(i in 3:7){
x<- 10-i
print(x)
}
for(i in 1:10){
i<- i+2
print(i) # 윗줄 좌변에 덮어 씌워진 i 를 출력해라
for(i in 1:10){
if(i%%2==0){ # i 나누기 2 했을때 나머지가 0이라면
cat(i, "even", "\n")
} else { # 그렇지 않다면
cat(i, "odd", "\n")
}
}
}
# 문자를 쓸때는 print 대신 cat, 엔터 넣을 때는 "\n" 넣어줘야
for(i in 1:10){
if(i%%2==0){ # i 나누기 2 했을때 나머지가 0이라면
cat(i, "even")
} else { # 그렇지 않다면
cat(i, "odd")
}
}
# while문
i <- 1
while(i<=10){ # i가 10보다 작거나 같은 한
i <- i+3
print(i)
}
repeat문
계속 반복되므로 break 명령어로 멈추게해야.
repeat print("hello")
i <- 1
repeat{
print(i)
if(i>=10){
break
}
i <- i+1
}
for (i in 1:10){
if (i==5){
break
}
print(i)
}
사용자 정의 함수
Y <- function(y){ # 함수 y를 Y 라고 하자
Y <- y+10
return(Y)
}
Y(20) # y가 20일때 함수값은??
Y(35)
Y <- function(y){ # 함수 y를 Y 라고 하자
Y <- y+10
return(Y)
y(20)
Y <- function(y){ # 함수 y를 Y 라고 하자
Y <- y+10
return(Y)
}
y(20)
y(35)
multi <- function(x,y){ # 함수 x,y를 multi 라고 하자
multi <- x*y # 함수의 정의: x * y
return(multi)
}
multi(10,20)
multi(15,7)
multi(15,15)
abc <- function(a,b,c){ # 함수 a,b,c를 abc 라고 하자
abc <- a+b+c
return(abc)
}
abc(10,30,50)
abc(3,7,90)
addsub <- function(a,b){
add <- a+b
sub <- a-b
return(c(add, sub))
}
addsub(8,46)
addsub(20,10)
BMI <- function(kg,m){ # 함수 kg, m을 BMI 라고 하자
BMI <- kg/(m*m) # (m**2)
return(BMI)
}
BMI(60, 1.7)
BMI(60, 1.8)
논리연산자
x <- c(1:10) # 1부터 10까지 수를 x라고 하자
result1 <- 3<x & x<9 # 3초과 and 9 미만의 수를 저장해라
result1
x[result1]
result2 <- 3<x | x<9 # 3초과 or 9 미만의 수를 저장해라
result2 # 1부터 10까지 모든 수는 3초과 또는 9 미만에 해당
x[result2]
내장데이터,기본 그림 그리기
1+1
22+35
532-145
35*6
8/5
8%%5
8%/%5
3**4
9**2
round(1.4) # 반올림
round(1.9)
ceiling(3.6) # 올림
floor(3.6) # 내림
sqrt(16) # 루트 씌워라
log(100) # 로그 e에 100
log(8, base = 2) # 로그 2(밑수)에 8
log2(8)
log10(100) # 로그 10에 100
a <- 100 # a를 100 이라고 하자
b <- 120
a-b
a+b
10==10
5==7
3 <= 8
5 >= 6
벡터연산
a <- c(1,2,3,4) # 벡터 만들기
b <- c(5,6,7,8)
a+b
a-b
a/b
a*b
c<- c(9,10,11)
a+c
mean(a)
median(a)
max(b)
min(b)
range(a)
var(a) # 분산
sd(a) # 표준편차
sqrt(var(a))
벡터 생성
x <- 1:200 # x 는 위의 숫자 집합이라고 하자
str(x) # 데이터의 구조를을 알려줘
length(x) # 벡터의 길이를 알려줘
seq(1,10,2) # 1부터 10까지, 2 간격으로 넣어줘라
seq(0.1, 1.0, 0.2) # 0.1부터 1.0까지, 0.2 간격으로
seq(3,30,3)
rep(1, times=10) # 1을 10번 해라
rep(1:3, times=3) # 1부터 3까지, 3번
rep(1:5, times=3) # 1부터 5까지를 3번
rep(c(1,3,5), times=3) # 1,3,5를 3번 반복
rep(1:3, each=3) # 1부터 3까지 각각 3번
sample(1:10, 4) # 4개를 랜덤하게 뽑아라
data structure
x1 <- c("hello", "skk student")
x2 <- c("1", "2")
x3 <- c(3,4,5)
str(x1) # 데이터 유형을 보여줘
str(x2) # 1,2는 숫자가 아니라 문자 유형이다.
str(x3) # 3,4,는 숫자 유형.
x2+x3
paste(x1,x2) # 변수를 붙여줘
paste(x3,x2)
x <- c(1,3,5,7,9)
x[1] # x 변수의 1번째 원소를 알려줘
x[4]
x[6]
x[1:3] # 1번째부터 3번째까지 원소를 알려줘
x1 <- c(2,4,6,8,10)
x1[-2] # 2번째 원소는 제외하고 알려줘
x1[-c(3:4)] # 3,4번째 원소는 제외하고 알려줘
bookpage example
bookpage <- c(300,250,330,270,280,310,275,290) # c안의 숫자집합을 bookpage라고 하자
hist(bookpage) # 히스토그램
mean(bookpage)
median(bookpage)
quantile(bookpage) # 1/4 지점, 1/2지점, 3/4지점의 값
IQR(bookpage)
var(bookpage) #분산을 구해라
sd(bookpage) # 표준편차를 구해라 standard deviation
range(bookpage) # 최소값/ 최대값을 구해라
diff(range(bookpage)) # 최소값 최대값의 차이
summary(bookpage) # ()데이터를 요약해줘
row, column
x <- list("Tom", 20, c(850, 890))
x
x[2] # 2번째 원소를 꺼내줘
x[3]
x <- list(name= "Tom", age= 20, toeic= c(850, 890))
x
x$name # x 오브젝트에서 name 을 알려줘
x$age
x$toeic
x1 <- matrix(1:20, nrow=4, ncol=5) # 1부터20까지, 4행5열 만들어
x1
x2 <- matrix(1:20, nrow=4, ncol=5, byrow = T) #행 방향으로
x2
x <- 1:4
y <- 5:8
n1 <- cbind(x,y) #열 방향 column x, y를 합해줘
n1
n2 <- rbind(x,y) #행 방향 row x, y를 합해줘
n2
x1[2,3] # 2행3열은 뭐야
x1[1,] # 1행 모든 숫자
x1[,4] # 4열 모든 숫자
x1[2,1:3] # 2행, 1부터 3열
x1[1,c(2,4)] # 1행, 2열과 4열
x1[,c(2,4)] # 2열 4열에 있는 모든 행
matrix
score <-matrix(c(100,80,75,77,83,90,70,60,95,88,98,82),nrow=4, ncol=3) #c 안의 숫자로 매트릭스 만들어, 4행 3열
score
rownames(score) <- c("세현","규리","나영","민정") #각 행의 이름
colnames(score) <- c("math","english","coding") #각 열의 이름
score
str(score)
정렬
//byrow = T/ False/ True 명령어
x <- c(3,6,4,8,2,9,7)
sort(x) # x 변수를 오름차순으로 정렬해
sort(x, decreasing=T) # 내림차순으로 정렬해
sort(x, decreasing=F) # 오름차순으로 정렬해
score example
score <- matrix(c(100,80,75,77,83,90,70,60,95,88,98,82),nrow=4, ncol=3) #c 안의 숫자로 매트릭스 만들어, 4행 3열
rownames(score) <- c("세현","규리","나영","민정") #각 행의 이름
colnames(score) <- c("math","english","coding") #각 열의 이름
score
str(score) # 스코어 오브젝트의 구조??
score["나영","coding"] # 나영이의 코딩점수
score["민정",] # 민정이의 모든 열 점수
score[,"coding"] # 모든 학생의 코딩 점수를 알려줘
grade <- matrix(c("a","b","c","a","a","d"), nrow = 2, ncol = 3)
grade
rownames(grade) <- c("세현","규리") #각 행의 이름
colnames(grade) <- c("math","toeic","R") #각 열의 이름
seq(10,100,10)
score <- matrix(seq(10,100,10),nrow=5, ncol=2)
rownames(score) <- c(1:5) #각 행의 이름
colnames(score) <- c("소연","온유")
Soyeon <- c(10,20,30,40,50)
Ohnyou <- c(60,70,80,90,100)
score <- cbind(Soyeon, Ohnyu)
score
apply(score,1,sum) # 각 행의 sum 을 구해
apply(score,1,mean) # 각 행의 mean 을 구해
apply(score,2,sum) # 각 열의 sum 을 구해
apply(score,2,mean) # 각 열의 mean을 구해
데이터 프레임
x1 <- c(1,2,3,4)
x2 <- c(90,80,70,60)
a <- data.frame(x1,x2) # x1,x2 로 이루어진 데이터프레임 만들어라
a
str(a) # a의 구조는??
dim(a) # 4행 2열의 데이터프레임
colSums(a) # 열에 있는 수를 sum 해라
colMeans(a) # 열에 있는 수 평균을 구해라
rowSums(a) # 행에 있는 수를 sum 하라
rowMeans(a) # 행에 있는 수 평균을 구해라
name <- c("유민","윤주","일범","효준") # c 안의 이름을 name 안에
age <- c(19,22,20,25) # c 안에 숫자를 age 안에
major <- c("문헌","문헌","융합","사회") # c 안의 전공을 major에
r.class <- data.frame(name, age,major)
# name, age,major으로 이루어진 데이터프레임(행렬) 만들어줘
r.class
str(r.class)
View(r.class) # 새 창에 데이터
r.class[2,] # 2행, 모든 열을 보여줘
r.class[,"major"] # 모든 행, major 열을 보여줘
r.class$major # r.class 데이터의 major 변수를 보여줘
열 추가
r.class$toeic <- c(900, 910, 920, 930)
r.class
sw <- (list("승원", 24, "글경", 950)) # 추가하려는 리스트
r.class <- rbind(r.class,sw) #rbind 행을 합해줘
r.class
r.class$age <- NULL # age 열 삭제하기
name <- c("윤혁","지운","재홍","채윤","수민","대우") # 문자벡터
bloodtype <- c("a","b","o","ab","o","a") # 문자벡터
BT <- data.frame(name, bloodtype)
# 이름, 혈액형으로 데이터 프레임을 만들어라
BT
table(BT) # blood type으로 빈도표를 만들어줘
major <- c("컬쳐","경영","데융","문헌","수학","글경")
BT$major <- c("컬쳐","경영","데융","문헌","수학","글경")
BT
내장 데이터
View(cars)
str(cars) # 구조: 데이터프레임
dim(cars)
names(cars) # 각 변수의 이름??
mean(cars$speed)
mean(cars$dist)
hist(cars$speed)
plot(cars$speed, cars$dist) # 산점도
abline(cars$speed, cars$dist, col="red") # 데이터에 기반한 직선(회귀선)
state.x77 # 내장데이터, 매트릭스
View(state.x77) #state.x77를 별도의 탭에서 보여줘
dim(state.x77) # 몇행 몇열?
head(state.x77) # 맨위에 6줄
names(state.x77) # 매트릭스라 안보임. df로 변환해줘야 함
class(state.x77) # 데이터 형태 알려줘
state <- data.frame(state.x77)
# state.x77을 데이터프레임 형태로 변환해서 state 이라고 저장해줘
names(state) # 변수 이름은 뭐야?(열에 해당되는 변수)
colMeans(state) # 모든 열의 평균값
mean(state$Income) # 미국 주의 소득의 평균
max(state$Income) # 소득이 가장 높은 주의 소득?
min(state$Income)
str(state)
plot(state$HS.Grad, state$Income)
abline(state$HS.Grad, state$Income, col="red")
조건문
if else: 가장 많이 쓰이는 명령어
a <- 10
b <- 9
if(a>5 & b> 10){
print(a+b)
} else {
print(a-b)
}
if(a>5 & b> 10) {print(a+b)} else {print(a-b)}
score <- 75
if(score >= 90) {
grade <- "A"
} else if (score >= 80) {
grade <- "B"
} else if (score >= 70) {
grade <- "C"
} else {
grade <- "D"
}
grade
for문
for (i in list)
{명령어}
for(i in 1:10){
print(i)
}
for(i in 3:7){
x<- 10-i
print(x)
}
for(i in 1:10){
i<- i+2
print(i) # 윗줄 좌변에 덮어 씌워진 i 를 출력해라
for(i in 1:10){
if(i%%2==0){ # i 나누기 2 했을때 나머지가 0이라면
cat(i, "even", "\n")
} else { # 그렇지 않다면
cat(i, "odd", "\n")
}
}
}
# 문자를 쓸때는 print 대신 cat, 엔터 넣을 때는 "\n" 넣어줘야
for(i in 1:10){
if(i%%2==0){ # i 나누기 2 했을때 나머지가 0이라면
cat(i, "even")
} else { # 그렇지 않다면
cat(i, "odd")
}
}
# while문
i <- 1
while(i<=10){ # i가 10보다 작거나 같은 한
i <- i+3
print(i)
}
repeat문
계속 반복되므로 break 명령어로 멈추게해야.
repeat print("hello")
i <- 1
repeat{
print(i)
if(i>=10){
break
}
i <- i+1
}
for (i in 1:10){
if (i==5){
break
}
print(i)
}
사용자 정의 함수
Y <- function(y){ # 함수 y를 Y 라고 하자
Y <- y+10
return(Y)
}
Y(20) # y가 20일때 함수값은??
Y(35)
Y <- function(y){ # 함수 y를 Y 라고 하자
Y <- y+10
return(Y)
y(20)
Y <- function(y){ # 함수 y를 Y 라고 하자
Y <- y+10
return(Y)
}
y(20)
y(35)
multi <- function(x,y){ # 함수 x,y를 multi 라고 하자
multi <- x*y # 함수의 정의: x * y
return(multi)
}
multi(10,20)
multi(15,7)
multi(15,15)
abc <- function(a,b,c){ # 함수 a,b,c를 abc 라고 하자
abc <- a+b+c
return(abc)
}
abc(10,30,50)
abc(3,7,90)
addsub <- function(a,b){
add <- a+b
sub <- a-b
return(c(add, sub))
}
addsub(8,46)
addsub(20,10)
BMI <- function(kg,m){ # 함수 kg, m을 BMI 라고 하자
BMI <- kg/(m*m) # (m**2)
return(BMI)
}
BMI(60, 1.7)
BMI(60, 1.8)
논리연산자
x <- c(1:10) # 1부터 10까지 수를 x라고 하자
result1 <- 3<x & x<9 # 3초과 and 9 미만의 수를 저장해라
result1
x[result1]
result2 <- 3<x | x<9 # 3초과 or 9 미만의 수를 저장해라
result2 # 1부터 10까지 모든 수는 3초과 또는 9 미만에 해당
x[result2]
내장데이터,기본 그림 그리기
a <- c(1,2,3,4) # 벡터 만들기
b <- c(5,6,7,8)
a+b
a-b
a/b
a*b
c<- c(9,10,11)
a+c
mean(a)
median(a)
max(b)
min(b)
range(a)
var(a) # 분산
sd(a) # 표준편차
sqrt(var(a))
x <- 1:200 # x 는 위의 숫자 집합이라고 하자
str(x) # 데이터의 구조를을 알려줘
length(x) # 벡터의 길이를 알려줘
seq(1,10,2) # 1부터 10까지, 2 간격으로 넣어줘라
seq(0.1, 1.0, 0.2) # 0.1부터 1.0까지, 0.2 간격으로
seq(3,30,3)
rep(1, times=10) # 1을 10번 해라
rep(1:3, times=3) # 1부터 3까지, 3번
rep(1:5, times=3) # 1부터 5까지를 3번
rep(c(1,3,5), times=3) # 1,3,5를 3번 반복
rep(1:3, each=3) # 1부터 3까지 각각 3번
sample(1:10, 4) # 4개를 랜덤하게 뽑아라
data structure
x1 <- c("hello", "skk student")
x2 <- c("1", "2")
x3 <- c(3,4,5)
str(x1) # 데이터 유형을 보여줘
str(x2) # 1,2는 숫자가 아니라 문자 유형이다.
str(x3) # 3,4,는 숫자 유형.
x2+x3
paste(x1,x2) # 변수를 붙여줘
paste(x3,x2)
x <- c(1,3,5,7,9)
x[1] # x 변수의 1번째 원소를 알려줘
x[4]
x[6]
x[1:3] # 1번째부터 3번째까지 원소를 알려줘
x1 <- c(2,4,6,8,10)
x1[-2] # 2번째 원소는 제외하고 알려줘
x1[-c(3:4)] # 3,4번째 원소는 제외하고 알려줘
bookpage example
bookpage <- c(300,250,330,270,280,310,275,290) # c안의 숫자집합을 bookpage라고 하자
hist(bookpage) # 히스토그램
mean(bookpage)
median(bookpage)
quantile(bookpage) # 1/4 지점, 1/2지점, 3/4지점의 값
IQR(bookpage)
var(bookpage) #분산을 구해라
sd(bookpage) # 표준편차를 구해라 standard deviation
range(bookpage) # 최소값/ 최대값을 구해라
diff(range(bookpage)) # 최소값 최대값의 차이
summary(bookpage) # ()데이터를 요약해줘
row, column
x <- list("Tom", 20, c(850, 890))
x
x[2] # 2번째 원소를 꺼내줘
x[3]
x <- list(name= "Tom", age= 20, toeic= c(850, 890))
x
x$name # x 오브젝트에서 name 을 알려줘
x$age
x$toeic
x1 <- matrix(1:20, nrow=4, ncol=5) # 1부터20까지, 4행5열 만들어
x1
x2 <- matrix(1:20, nrow=4, ncol=5, byrow = T) #행 방향으로
x2
x <- 1:4
y <- 5:8
n1 <- cbind(x,y) #열 방향 column x, y를 합해줘
n1
n2 <- rbind(x,y) #행 방향 row x, y를 합해줘
n2
x1[2,3] # 2행3열은 뭐야
x1[1,] # 1행 모든 숫자
x1[,4] # 4열 모든 숫자
x1[2,1:3] # 2행, 1부터 3열
x1[1,c(2,4)] # 1행, 2열과 4열
x1[,c(2,4)] # 2열 4열에 있는 모든 행
matrix
score <-matrix(c(100,80,75,77,83,90,70,60,95,88,98,82),nrow=4, ncol=3) #c 안의 숫자로 매트릭스 만들어, 4행 3열
score
rownames(score) <- c("세현","규리","나영","민정") #각 행의 이름
colnames(score) <- c("math","english","coding") #각 열의 이름
score
str(score)
정렬
//byrow = T/ False/ True 명령어
x <- c(3,6,4,8,2,9,7)
sort(x) # x 변수를 오름차순으로 정렬해
sort(x, decreasing=T) # 내림차순으로 정렬해
sort(x, decreasing=F) # 오름차순으로 정렬해
score example
score <- matrix(c(100,80,75,77,83,90,70,60,95,88,98,82),nrow=4, ncol=3) #c 안의 숫자로 매트릭스 만들어, 4행 3열
rownames(score) <- c("세현","규리","나영","민정") #각 행의 이름
colnames(score) <- c("math","english","coding") #각 열의 이름
score
str(score) # 스코어 오브젝트의 구조??
score["나영","coding"] # 나영이의 코딩점수
score["민정",] # 민정이의 모든 열 점수
score[,"coding"] # 모든 학생의 코딩 점수를 알려줘
grade <- matrix(c("a","b","c","a","a","d"), nrow = 2, ncol = 3)
grade
rownames(grade) <- c("세현","규리") #각 행의 이름
colnames(grade) <- c("math","toeic","R") #각 열의 이름
seq(10,100,10)
score <- matrix(seq(10,100,10),nrow=5, ncol=2)
rownames(score) <- c(1:5) #각 행의 이름
colnames(score) <- c("소연","온유")
Soyeon <- c(10,20,30,40,50)
Ohnyou <- c(60,70,80,90,100)
score <- cbind(Soyeon, Ohnyu)
score
apply(score,1,sum) # 각 행의 sum 을 구해
apply(score,1,mean) # 각 행의 mean 을 구해
apply(score,2,sum) # 각 열의 sum 을 구해
apply(score,2,mean) # 각 열의 mean을 구해
데이터 프레임
x1 <- c(1,2,3,4)
x2 <- c(90,80,70,60)
a <- data.frame(x1,x2) # x1,x2 로 이루어진 데이터프레임 만들어라
a
str(a) # a의 구조는??
dim(a) # 4행 2열의 데이터프레임
colSums(a) # 열에 있는 수를 sum 해라
colMeans(a) # 열에 있는 수 평균을 구해라
rowSums(a) # 행에 있는 수를 sum 하라
rowMeans(a) # 행에 있는 수 평균을 구해라
name <- c("유민","윤주","일범","효준") # c 안의 이름을 name 안에
age <- c(19,22,20,25) # c 안에 숫자를 age 안에
major <- c("문헌","문헌","융합","사회") # c 안의 전공을 major에
r.class <- data.frame(name, age,major)
# name, age,major으로 이루어진 데이터프레임(행렬) 만들어줘
r.class
str(r.class)
View(r.class) # 새 창에 데이터
r.class[2,] # 2행, 모든 열을 보여줘
r.class[,"major"] # 모든 행, major 열을 보여줘
r.class$major # r.class 데이터의 major 변수를 보여줘
열 추가
r.class$toeic <- c(900, 910, 920, 930)
r.class
sw <- (list("승원", 24, "글경", 950)) # 추가하려는 리스트
r.class <- rbind(r.class,sw) #rbind 행을 합해줘
r.class
r.class$age <- NULL # age 열 삭제하기
name <- c("윤혁","지운","재홍","채윤","수민","대우") # 문자벡터
bloodtype <- c("a","b","o","ab","o","a") # 문자벡터
BT <- data.frame(name, bloodtype)
# 이름, 혈액형으로 데이터 프레임을 만들어라
BT
table(BT) # blood type으로 빈도표를 만들어줘
major <- c("컬쳐","경영","데융","문헌","수학","글경")
BT$major <- c("컬쳐","경영","데융","문헌","수학","글경")
BT
내장 데이터
View(cars)
str(cars) # 구조: 데이터프레임
dim(cars)
names(cars) # 각 변수의 이름??
mean(cars$speed)
mean(cars$dist)
hist(cars$speed)
plot(cars$speed, cars$dist) # 산점도
abline(cars$speed, cars$dist, col="red") # 데이터에 기반한 직선(회귀선)
state.x77 # 내장데이터, 매트릭스
View(state.x77) #state.x77를 별도의 탭에서 보여줘
dim(state.x77) # 몇행 몇열?
head(state.x77) # 맨위에 6줄
names(state.x77) # 매트릭스라 안보임. df로 변환해줘야 함
class(state.x77) # 데이터 형태 알려줘
state <- data.frame(state.x77)
# state.x77을 데이터프레임 형태로 변환해서 state 이라고 저장해줘
names(state) # 변수 이름은 뭐야?(열에 해당되는 변수)
colMeans(state) # 모든 열의 평균값
mean(state$Income) # 미국 주의 소득의 평균
max(state$Income) # 소득이 가장 높은 주의 소득?
min(state$Income)
str(state)
plot(state$HS.Grad, state$Income)
abline(state$HS.Grad, state$Income, col="red")
조건문
if else: 가장 많이 쓰이는 명령어
a <- 10
b <- 9
if(a>5 & b> 10){
print(a+b)
} else {
print(a-b)
}
if(a>5 & b> 10) {print(a+b)} else {print(a-b)}
score <- 75
if(score >= 90) {
grade <- "A"
} else if (score >= 80) {
grade <- "B"
} else if (score >= 70) {
grade <- "C"
} else {
grade <- "D"
}
grade
for문
for (i in list)
{명령어}
for(i in 1:10){
print(i)
}
for(i in 3:7){
x<- 10-i
print(x)
}
for(i in 1:10){
i<- i+2
print(i) # 윗줄 좌변에 덮어 씌워진 i 를 출력해라
for(i in 1:10){
if(i%%2==0){ # i 나누기 2 했을때 나머지가 0이라면
cat(i, "even", "\n")
} else { # 그렇지 않다면
cat(i, "odd", "\n")
}
}
}
# 문자를 쓸때는 print 대신 cat, 엔터 넣을 때는 "\n" 넣어줘야
for(i in 1:10){
if(i%%2==0){ # i 나누기 2 했을때 나머지가 0이라면
cat(i, "even")
} else { # 그렇지 않다면
cat(i, "odd")
}
}
# while문
i <- 1
while(i<=10){ # i가 10보다 작거나 같은 한
i <- i+3
print(i)
}
repeat문
계속 반복되므로 break 명령어로 멈추게해야.
repeat print("hello")
i <- 1
repeat{
print(i)
if(i>=10){
break
}
i <- i+1
}
for (i in 1:10){
if (i==5){
break
}
print(i)
}
사용자 정의 함수
Y <- function(y){ # 함수 y를 Y 라고 하자
Y <- y+10
return(Y)
}
Y(20) # y가 20일때 함수값은??
Y(35)
Y <- function(y){ # 함수 y를 Y 라고 하자
Y <- y+10
return(Y)
y(20)
Y <- function(y){ # 함수 y를 Y 라고 하자
Y <- y+10
return(Y)
}
y(20)
y(35)
multi <- function(x,y){ # 함수 x,y를 multi 라고 하자
multi <- x*y # 함수의 정의: x * y
return(multi)
}
multi(10,20)
multi(15,7)
multi(15,15)
abc <- function(a,b,c){ # 함수 a,b,c를 abc 라고 하자
abc <- a+b+c
return(abc)
}
abc(10,30,50)
abc(3,7,90)
addsub <- function(a,b){
add <- a+b
sub <- a-b
return(c(add, sub))
}
addsub(8,46)
addsub(20,10)
BMI <- function(kg,m){ # 함수 kg, m을 BMI 라고 하자
BMI <- kg/(m*m) # (m**2)
return(BMI)
}
BMI(60, 1.7)
BMI(60, 1.8)
논리연산자
x <- c(1:10) # 1부터 10까지 수를 x라고 하자
result1 <- 3<x & x<9 # 3초과 and 9 미만의 수를 저장해라
result1
x[result1]
result2 <- 3<x | x<9 # 3초과 or 9 미만의 수를 저장해라
result2 # 1부터 10까지 모든 수는 3초과 또는 9 미만에 해당
x[result2]
내장데이터,기본 그림 그리기
score <-matrix(c(100,80,75,77,83,90,70,60,95,88,98,82),nrow=4, ncol=3) #c 안의 숫자로 매트릭스 만들어, 4행 3열
score
rownames(score) <- c("세현","규리","나영","민정") #각 행의 이름
colnames(score) <- c("math","english","coding") #각 열의 이름
score
str(score)
//byrow = T/ False/ True 명령어
x <- c(3,6,4,8,2,9,7)
sort(x) # x 변수를 오름차순으로 정렬해
sort(x, decreasing=T) # 내림차순으로 정렬해
sort(x, decreasing=F) # 오름차순으로 정렬해
score <- matrix(c(100,80,75,77,83,90,70,60,95,88,98,82),nrow=4, ncol=3) #c 안의 숫자로 매트릭스 만들어, 4행 3열
rownames(score) <- c("세현","규리","나영","민정") #각 행의 이름
colnames(score) <- c("math","english","coding") #각 열의 이름
score
str(score) # 스코어 오브젝트의 구조??
score["나영","coding"] # 나영이의 코딩점수
score["민정",] # 민정이의 모든 열 점수
score[,"coding"] # 모든 학생의 코딩 점수를 알려줘
grade <- matrix(c("a","b","c","a","a","d"), nrow = 2, ncol = 3)
grade
rownames(grade) <- c("세현","규리") #각 행의 이름
colnames(grade) <- c("math","toeic","R") #각 열의 이름
seq(10,100,10)
score <- matrix(seq(10,100,10),nrow=5, ncol=2)
rownames(score) <- c(1:5) #각 행의 이름
colnames(score) <- c("소연","온유")
Soyeon <- c(10,20,30,40,50)
Ohnyou <- c(60,70,80,90,100)
score <- cbind(Soyeon, Ohnyu)
score
apply(score,1,sum) # 각 행의 sum 을 구해
apply(score,1,mean) # 각 행의 mean 을 구해
apply(score,2,sum) # 각 열의 sum 을 구해
apply(score,2,mean) # 각 열의 mean을 구해
x1 <- c(1,2,3,4)
x2 <- c(90,80,70,60)
a <- data.frame(x1,x2) # x1,x2 로 이루어진 데이터프레임 만들어라
a
str(a) # a의 구조는??
dim(a) # 4행 2열의 데이터프레임
colSums(a) # 열에 있는 수를 sum 해라
colMeans(a) # 열에 있는 수 평균을 구해라
rowSums(a) # 행에 있는 수를 sum 하라
rowMeans(a) # 행에 있는 수 평균을 구해라
name <- c("유민","윤주","일범","효준") # c 안의 이름을 name 안에
age <- c(19,22,20,25) # c 안에 숫자를 age 안에
major <- c("문헌","문헌","융합","사회") # c 안의 전공을 major에
r.class <- data.frame(name, age,major)
# name, age,major으로 이루어진 데이터프레임(행렬) 만들어줘
r.class
str(r.class)
View(r.class) # 새 창에 데이터
r.class[2,] # 2행, 모든 열을 보여줘
r.class[,"major"] # 모든 행, major 열을 보여줘
r.class$major # r.class 데이터의 major 변수를 보여줘
열 추가
r.class$toeic <- c(900, 910, 920, 930)
r.class
sw <- (list("승원", 24, "글경", 950)) # 추가하려는 리스트
r.class <- rbind(r.class,sw) #rbind 행을 합해줘
r.class
r.class$age <- NULL # age 열 삭제하기
name <- c("윤혁","지운","재홍","채윤","수민","대우") # 문자벡터
bloodtype <- c("a","b","o","ab","o","a") # 문자벡터
BT <- data.frame(name, bloodtype)
# 이름, 혈액형으로 데이터 프레임을 만들어라
BT
table(BT) # blood type으로 빈도표를 만들어줘
major <- c("컬쳐","경영","데융","문헌","수학","글경")
BT$major <- c("컬쳐","경영","데융","문헌","수학","글경")
BT
내장 데이터
View(cars)
str(cars) # 구조: 데이터프레임
dim(cars)
names(cars) # 각 변수의 이름??
mean(cars$speed)
mean(cars$dist)
hist(cars$speed)
plot(cars$speed, cars$dist) # 산점도
abline(cars$speed, cars$dist, col="red") # 데이터에 기반한 직선(회귀선)
state.x77 # 내장데이터, 매트릭스
View(state.x77) #state.x77를 별도의 탭에서 보여줘
dim(state.x77) # 몇행 몇열?
head(state.x77) # 맨위에 6줄
names(state.x77) # 매트릭스라 안보임. df로 변환해줘야 함
class(state.x77) # 데이터 형태 알려줘
state <- data.frame(state.x77)
# state.x77을 데이터프레임 형태로 변환해서 state 이라고 저장해줘
names(state) # 변수 이름은 뭐야?(열에 해당되는 변수)
colMeans(state) # 모든 열의 평균값
mean(state$Income) # 미국 주의 소득의 평균
max(state$Income) # 소득이 가장 높은 주의 소득?
min(state$Income)
str(state)
plot(state$HS.Grad, state$Income)
abline(state$HS.Grad, state$Income, col="red")
조건문
if else: 가장 많이 쓰이는 명령어
a <- 10
b <- 9
if(a>5 & b> 10){
print(a+b)
} else {
print(a-b)
}
if(a>5 & b> 10) {print(a+b)} else {print(a-b)}
score <- 75
if(score >= 90) {
grade <- "A"
} else if (score >= 80) {
grade <- "B"
} else if (score >= 70) {
grade <- "C"
} else {
grade <- "D"
}
grade
for문
for (i in list)
{명령어}
for(i in 1:10){
print(i)
}
for(i in 3:7){
x<- 10-i
print(x)
}
for(i in 1:10){
i<- i+2
print(i) # 윗줄 좌변에 덮어 씌워진 i 를 출력해라
for(i in 1:10){
if(i%%2==0){ # i 나누기 2 했을때 나머지가 0이라면
cat(i, "even", "\n")
} else { # 그렇지 않다면
cat(i, "odd", "\n")
}
}
}
# 문자를 쓸때는 print 대신 cat, 엔터 넣을 때는 "\n" 넣어줘야
for(i in 1:10){
if(i%%2==0){ # i 나누기 2 했을때 나머지가 0이라면
cat(i, "even")
} else { # 그렇지 않다면
cat(i, "odd")
}
}
# while문
i <- 1
while(i<=10){ # i가 10보다 작거나 같은 한
i <- i+3
print(i)
}
repeat문
계속 반복되므로 break 명령어로 멈추게해야.
repeat print("hello")
i <- 1
repeat{
print(i)
if(i>=10){
break
}
i <- i+1
}
for (i in 1:10){
if (i==5){
break
}
print(i)
}
사용자 정의 함수
Y <- function(y){ # 함수 y를 Y 라고 하자
Y <- y+10
return(Y)
}
Y(20) # y가 20일때 함수값은??
Y(35)
Y <- function(y){ # 함수 y를 Y 라고 하자
Y <- y+10
return(Y)
y(20)
Y <- function(y){ # 함수 y를 Y 라고 하자
Y <- y+10
return(Y)
}
y(20)
y(35)
multi <- function(x,y){ # 함수 x,y를 multi 라고 하자
multi <- x*y # 함수의 정의: x * y
return(multi)
}
multi(10,20)
multi(15,7)
multi(15,15)
abc <- function(a,b,c){ # 함수 a,b,c를 abc 라고 하자
abc <- a+b+c
return(abc)
}
abc(10,30,50)
abc(3,7,90)
addsub <- function(a,b){
add <- a+b
sub <- a-b
return(c(add, sub))
}
addsub(8,46)
addsub(20,10)
BMI <- function(kg,m){ # 함수 kg, m을 BMI 라고 하자
BMI <- kg/(m*m) # (m**2)
return(BMI)
}
BMI(60, 1.7)
BMI(60, 1.8)
논리연산자
x <- c(1:10) # 1부터 10까지 수를 x라고 하자
result1 <- 3<x & x<9 # 3초과 and 9 미만의 수를 저장해라
result1
x[result1]
result2 <- 3<x | x<9 # 3초과 or 9 미만의 수를 저장해라
result2 # 1부터 10까지 모든 수는 3초과 또는 9 미만에 해당
x[result2]
내장데이터,기본 그림 그리기
View(cars)
str(cars) # 구조: 데이터프레임
dim(cars)
names(cars) # 각 변수의 이름??
mean(cars$speed)
mean(cars$dist)
hist(cars$speed)
plot(cars$speed, cars$dist) # 산점도
abline(cars$speed, cars$dist, col="red") # 데이터에 기반한 직선(회귀선)
state.x77 # 내장데이터, 매트릭스
View(state.x77) #state.x77를 별도의 탭에서 보여줘
dim(state.x77) # 몇행 몇열?
head(state.x77) # 맨위에 6줄
names(state.x77) # 매트릭스라 안보임. df로 변환해줘야 함
class(state.x77) # 데이터 형태 알려줘
state <- data.frame(state.x77)
# state.x77을 데이터프레임 형태로 변환해서 state 이라고 저장해줘
names(state) # 변수 이름은 뭐야?(열에 해당되는 변수)
colMeans(state) # 모든 열의 평균값
mean(state$Income) # 미국 주의 소득의 평균
max(state$Income) # 소득이 가장 높은 주의 소득?
min(state$Income)
str(state)
plot(state$HS.Grad, state$Income)
abline(state$HS.Grad, state$Income, col="red")
if else: 가장 많이 쓰이는 명령어
a <- 10
b <- 9
if(a>5 & b> 10){
print(a+b)
} else {
print(a-b)
}
if(a>5 & b> 10) {print(a+b)} else {print(a-b)}
score <- 75
if(score >= 90) {
grade <- "A"
} else if (score >= 80) {
grade <- "B"
} else if (score >= 70) {
grade <- "C"
} else {
grade <- "D"
}
grade
for문
for (i in list)
{명령어}
for(i in 1:10){
print(i)
}
for(i in 3:7){
x<- 10-i
print(x)
}
for(i in 1:10){
i<- i+2
print(i) # 윗줄 좌변에 덮어 씌워진 i 를 출력해라
for(i in 1:10){
if(i%%2==0){ # i 나누기 2 했을때 나머지가 0이라면
cat(i, "even", "\n")
} else { # 그렇지 않다면
cat(i, "odd", "\n")
}
}
}
# 문자를 쓸때는 print 대신 cat, 엔터 넣을 때는 "\n" 넣어줘야
for(i in 1:10){
if(i%%2==0){ # i 나누기 2 했을때 나머지가 0이라면
cat(i, "even")
} else { # 그렇지 않다면
cat(i, "odd")
}
}
# while문
i <- 1
while(i<=10){ # i가 10보다 작거나 같은 한
i <- i+3
print(i)
}
repeat문
계속 반복되므로 break 명령어로 멈추게해야.
repeat print("hello")
i <- 1
repeat{
print(i)
if(i>=10){
break
}
i <- i+1
}
for (i in 1:10){
if (i==5){
break
}
print(i)
}
사용자 정의 함수
Y <- function(y){ # 함수 y를 Y 라고 하자
Y <- y+10
return(Y)
}
Y(20) # y가 20일때 함수값은??
Y(35)
Y <- function(y){ # 함수 y를 Y 라고 하자
Y <- y+10
return(Y)
y(20)
Y <- function(y){ # 함수 y를 Y 라고 하자
Y <- y+10
return(Y)
}
y(20)
y(35)
multi <- function(x,y){ # 함수 x,y를 multi 라고 하자
multi <- x*y # 함수의 정의: x * y
return(multi)
}
multi(10,20)
multi(15,7)
multi(15,15)
abc <- function(a,b,c){ # 함수 a,b,c를 abc 라고 하자
abc <- a+b+c
return(abc)
}
abc(10,30,50)
abc(3,7,90)
addsub <- function(a,b){
add <- a+b
sub <- a-b
return(c(add, sub))
}
addsub(8,46)
addsub(20,10)
BMI <- function(kg,m){ # 함수 kg, m을 BMI 라고 하자
BMI <- kg/(m*m) # (m**2)
return(BMI)
}
BMI(60, 1.7)
BMI(60, 1.8)
논리연산자
x <- c(1:10) # 1부터 10까지 수를 x라고 하자
result1 <- 3<x & x<9 # 3초과 and 9 미만의 수를 저장해라
result1
x[result1]
result2 <- 3<x | x<9 # 3초과 or 9 미만의 수를 저장해라
result2 # 1부터 10까지 모든 수는 3초과 또는 9 미만에 해당
x[result2]
내장데이터,기본 그림 그리기
for (i in list)
{명령어}
for(i in 1:10){
print(i)
}
for(i in 3:7){
x<- 10-i
print(x)
}
for(i in 1:10){
i<- i+2
print(i) # 윗줄 좌변에 덮어 씌워진 i 를 출력해라
for(i in 1:10){
if(i%%2==0){ # i 나누기 2 했을때 나머지가 0이라면
cat(i, "even", "\n")
} else { # 그렇지 않다면
cat(i, "odd", "\n")
}
}
}
# 문자를 쓸때는 print 대신 cat, 엔터 넣을 때는 "\n" 넣어줘야
for(i in 1:10){
if(i%%2==0){ # i 나누기 2 했을때 나머지가 0이라면
cat(i, "even")
} else { # 그렇지 않다면
cat(i, "odd")
}
}
# while문
i <- 1
while(i<=10){ # i가 10보다 작거나 같은 한
i <- i+3
print(i)
}
계속 반복되므로 break 명령어로 멈추게해야.
repeat print("hello")
i <- 1
repeat{
print(i)
if(i>=10){
break
}
i <- i+1
}
for (i in 1:10){
if (i==5){
break
}
print(i)
}
사용자 정의 함수
Y <- function(y){ # 함수 y를 Y 라고 하자
Y <- y+10
return(Y)
}
Y(20) # y가 20일때 함수값은??
Y(35)
Y <- function(y){ # 함수 y를 Y 라고 하자
Y <- y+10
return(Y)
y(20)
Y <- function(y){ # 함수 y를 Y 라고 하자
Y <- y+10
return(Y)
}
y(20)
y(35)
multi <- function(x,y){ # 함수 x,y를 multi 라고 하자
multi <- x*y # 함수의 정의: x * y
return(multi)
}
multi(10,20)
multi(15,7)
multi(15,15)
abc <- function(a,b,c){ # 함수 a,b,c를 abc 라고 하자
abc <- a+b+c
return(abc)
}
abc(10,30,50)
abc(3,7,90)
addsub <- function(a,b){
add <- a+b
sub <- a-b
return(c(add, sub))
}
addsub(8,46)
addsub(20,10)
BMI <- function(kg,m){ # 함수 kg, m을 BMI 라고 하자
BMI <- kg/(m*m) # (m**2)
return(BMI)
}
BMI(60, 1.7)
BMI(60, 1.8)
논리연산자
x <- c(1:10) # 1부터 10까지 수를 x라고 하자
result1 <- 3<x & x<9 # 3초과 and 9 미만의 수를 저장해라
result1
x[result1]
result2 <- 3<x | x<9 # 3초과 or 9 미만의 수를 저장해라
result2 # 1부터 10까지 모든 수는 3초과 또는 9 미만에 해당
x[result2]
내장데이터,기본 그림 그리기
Y <- function(y){ # 함수 y를 Y 라고 하자
Y <- y+10
return(Y)
}
Y(20) # y가 20일때 함수값은??
Y(35)
Y <- function(y){ # 함수 y를 Y 라고 하자
Y <- y+10
return(Y)
y(20)
Y <- function(y){ # 함수 y를 Y 라고 하자
Y <- y+10
return(Y)
}
y(20)
y(35)
multi <- function(x,y){ # 함수 x,y를 multi 라고 하자
multi <- x*y # 함수의 정의: x * y
return(multi)
}
multi(10,20)
multi(15,7)
multi(15,15)
abc <- function(a,b,c){ # 함수 a,b,c를 abc 라고 하자
abc <- a+b+c
return(abc)
}
abc(10,30,50)
abc(3,7,90)
addsub <- function(a,b){
add <- a+b
sub <- a-b
return(c(add, sub))
}
addsub(8,46)
addsub(20,10)
BMI <- function(kg,m){ # 함수 kg, m을 BMI 라고 하자
BMI <- kg/(m*m) # (m**2)
return(BMI)
}
BMI(60, 1.7)
BMI(60, 1.8)
x <- c(1:10) # 1부터 10까지 수를 x라고 하자
result1 <- 3<x & x<9 # 3초과 and 9 미만의 수를 저장해라
result1
x[result1]
result2 <- 3<x | x<9 # 3초과 or 9 미만의 수를 저장해라
result2 # 1부터 10까지 모든 수는 3초과 또는 9 미만에 해당
x[result2]
내장데이터,기본 그림 그리기
그래프- hist, barplot, pie, boxplot, plot, 버블차트
colors() # 657개의 R 컬러 이름을 알 수 있다.
Orange
mean(Orange$age)
mean(Orange$circumference)
hist(Orange$circumference, col = "turquoise")
plot(Orange$age, Orange$circumference) # 산점도
plot(Orange) # 모든 변수끼리의 관계
cars
plot(cars$speed, cars$dist)
plot(cars)
cars$dist
hist(cars$dist)
hist(cars$dist,
main = "자동차 제동거리", # 그래프의 제목
xlab= "제동거리", ylab= "빈도수", # x,y축의 이름
border="blue", # 막대의 테두리
col="gold", # 막대의 색깔
breaks=10) # n개의 막대로 나타내라
iris
table(iris$Species)
a <- table(iris$Species)
pie(a)
pie(a,
main = "species of iris") # 그래프의 제목
barplot(a) # 막대그래프
barplot(a,
main = "species of iris",
xlab = "species", ylab = "number")
iris1 <- iris[, c(1:4)]
boxplot(iris1)
boxplot(iris$Sepal.Length, iris$Sepal.Width,
col = "yellow")
boxplot(Sepal.Length~ Species, # Species에 따른 분포를 그려라
data = iris, # 데이터는 iris를 쓴다
main= "Length result", # 그래프 제목
col= c("red", "blue", "purple")) # color 지정하기
box plot
x <- c(1:10)
boxplot(x)
x <- c(1:10, 20,21)
median(x)
boxplot(x)
선그래프
x <- c(100, 200, 180, 150, 160)
y <- c(220, 300, 280, 190, 240)
z <- c(310, 330, 320, 290, 220)
plot(x, type = "o", col="red",
ylim=c(0,400), axes = F, ann = F)
# type = "o", # 점과 선의 형태
# col="red", # red 색을 칠해라
# ylim=c(0,400), # y축의 범위는 0부터 400까지
# axes = F, ann = F # x,y 축의 테두리 없애라, 제목 없애라
axis(1, at=1:5,
lab=c("A","B","C","D","E"))
# (1, at=1:5, # x 축의 범위는 1부터 5까지
axis(2, ylim=c(0,400)) # y축의 범위는 0부터 400까지
lines(y, type = "b", pch=17, col="green", lty=5) # 추가
lines(z, type = "b", pch=11, col="blue", lty=5) # 추가
# lines: 선을 더 추가할때는 lines 명령어
# pch: 0~25번까지. 점의 모양
# col = color를 지정
# lty: 1~6번까지 선의 종류
title(main="book page", # 제목
col.main="purple") # 제목의 색깔
title(xlab="book", ylab="Page", # x, y 축의 이름
col.lab="grey") # 라벨의 색깔
legend(4.5,400, #legend #주석을 달아라 좌표 4, 400 위치에
c("sci","Eng","math"), # 각 선의 이름은 과학 영어 수학
cex=1.0, # 글자크기는 1.0
col = c("red","green","blue"), # 각 선의 색깔
pch = 21, # (주석 내) 점의 모양은 21번
lty=1) # 선의 모양은 1번
x <- 1:10
y1 <- log(x)
y2 <- sqrt(x)
plot(x, y1,
type = "l", col= "red") # 선을 그어라
lines(x, y2,
lty= 5, col= "blue") # 선을 추가해라
range(y1)
range(y2)
plot(x, y1,
ylim = c(0,4), # y축의 범위 0~4까지 설정
type = "l",
col= "red")
lines(x, y2,
lty= 5, col= "blue") # 선을 추가해라
View(Titanic) # 내장데이터 타이타닉
class <- margin.table(Titanic,
margin = 1) # 1열 기준 누적테이블
class
pie(class)
pie(class,
labels = c(325, 285, 706, 885),
main = "Titanic passengers") # 그래프 제목
text(0.5, 0.2, "1등석") # x,y축 좌표찍고 문자작성
text(0.2, 0.6, "2등석")
text(-0.5, 0.1, "3등석")
text(0.1, -0.3, "crew")
barplot(class)
barplot(class,
xlab = "Ferry Class", ylab= "number", # x,y축 이름
main = "Passengers by Class") # 그래프 제목
barplot(class,
horiz= T, # 수평(가로)막대그래프
xlab = "number", ylab= "Ferry Class",
main = "Passengers by Class")
survive.by.class <- margin.table(Titanic,
margin = c(4,1)) # 4열, 1열, 2차원테이블
survive.by.class
barplot(survive.by.class) # 수직배열 no 막대하부, yes 막대상부
barplot(survive.by.class,
beside = T) # 수평배열 no 왼쪽막대, yes 오른쪽막대
barplot(survive.by.class,
beside = T,
col = c("black", "green"), # 막대 색 지정
legend= T, # 범례표시
names.arg = c("1등석","2등석","3등석","선원"))#막대이름
state <- data.frame(state.x77) # 데이터 프레임 형태
View(state)
barplot(state$Income)
barplot(state$Murder)
head(state$Income) # 6행만 보여줘
barplot(head(state$Income), col= "brown")
axis(1, at=1:6, # x축 지정
lab=c("Alba","Alas","Arizo","Arkan","Cali", "Colo"))
barplot(head(state$Murder),
col= rainbow(6)) # rainbow 팔레트 n개 써라
axis(1, at=1:6, # x축 지정
lab=c("Alba","Alas","Arizo","Arkan","Cali", "Colo"))
state[c(3,5,7,9),1] # 3,5,7,9행의 1열만 보여줘
a <- state[c(3,5,7,9),1] # a에 넣는다
barplot(a)
버블차트 그리기
symbols(state$HS.Grad,state$Income,
circles = state$Population, #원은 인구를 의미
inches = 0.7, # 표준 0.7 크기
fg="black", # 원 테두리 색깔
bg="salmon", # 원 색깔
lwd= 1, # 원 테두리 굵기
xlab = "고졸비율", # x축
ylab = "1인당 소득", # y축
main= "고졸비율과 소득") # 그래프의 제목
text(state$HS.Grad, state$Income,
rownames(state), # 열의 이름을 넣어라
cex= 0.7, # 글씨 크기
col = "blue")
plot 화면분할하기
plot(1:20) # 1부터 20까지
plot(20:1)
par(mfrow=c(2,1)) # 가로2 세로 1의 비율로 그래프 만들어라
plot(1:20)
plot(20:1)
par(mfrow=c(1,3)) # 가로1 세로 3 비율로 그래프 만들어라
plot(1:20)
plot(20:1)
plot(5:1)
par(mfrow=c(2,2)) # 가로 2 세로 2개
barplot(1:5, col = "blue")
barplot(1:5, col = "yellow")
barplot(1:5, col = "red")
barplot(1:5, col = "purple")
par(mfrow=c(1,1)) # 분할화면 원상태로 되돌리기
# plot 화면분할하기
plot(1:20) # 1부터 20까지
plot(20:1)
par(mfrow=c(2,1)) # 가로2 세로 1의 비율로 그래프 만들어라
plot(1:20)
plot(20:1)
par(mfrow=c(1,3)) # 가로1 세로 3 비율로 그래프 만들어라
plot(1:20)
plot(20:1)
plot(5:1)
par(mfrow=c(2,2)) # 가로 2 세로 2개
barplot(1:5, col = "blue")
barplot(1:5, col = "yellow")
barplot(1:5, col = "red")
barplot(1:5, col = "purple")
par(mfrow=c(1,1)) # 분할화면 원상태로 되돌리기
ggplot2
install.packages("ggplot2")
library(ggplot2)
search() # 패키지가 잘 깔렸는지 확인
Orange
산점도
ggplot(Orange, aes(age, circumference))+ # orange 데이터, x,y축
geom_point(color= "Red") # 점을 red로 해줘
ggplot(Orange,
aes(age, circumference))+ # orange 데이터, x,y축
geom_point()+ # 점그래프 그려줘
stat_smooth(method = 'lm') # 추세선(회귀선)을 그어라
ggplot(Orange,
aes(Tree,circumference, color= Tree))+ # 각 tree에 따라 점 색 달라짐
geom_point()
ggplot(Orange,
aes(Tree,circumference))+ # 각 tree의 평균둘레
geom_bar(stat='identity', # 일반 막대그래프-y축 데이터의 값을 높이로
fill= "orange") # 막대를 채워라
cars
ggplot(cars, aes(speed, dist))+ # cars 데이터, x y 축
geom_point()+ # 점그래프 그려줘
stat_smooth(method = 'lm') # 추세선(회귀선)을 그어라
히스토그램
ggplot(cars, aes(x= dist))+ # cars 데이터, x y 축
geom_histogram(fill= "skyblue") # 막대의 색깔
ggplot(iris, aes(x=Petal.Length, fill= Species))+
geom_histogram(position='identity', # 막대 중첩표현
binwidth=0.3) # 막대의 넓이
막대그래프
ggplot(iris, aes(x= Species))+
geom_bar(fill= 'salmon')+
ggtitle("Frequency by Species")
ggplot(iris, aes(x= Species))+
geom_bar(fill= 'salmon')+
coord_flip() # 가로 막대그래프 만들어줘
species<- c("setosa", "versicolor", "virginica")
freq <- c(50, 50, 50)
a<- data.frame(species, freq) # 빈도표 형태의 데이터프레임
a
ggplot(a, aes(x= "species", y= freq, fill= species))+
geom_bar(stat = "identity")+ # 막대를 만들어줘
coord_polar("y")+ # 파이로 만들어줘
geom_text(aes(label= paste0(round(freq/1.50,2), "%")), # 나눗셈하고 소수점 둘째자리까지 표시
position = position_stack(vjust= 0.5)) # 텍스트의 위치는 부채꼴의 가운데에 위치
박스플랏
ggplot(iris, aes(x= Species, y= Sepal.Length))+
geom_boxplot(color= "red") # 테두리를 "" 색으로
ggplot(iris, aes(x= Species, y= Sepal.Length))+
geom_boxplot(fill= "red")+
ggtitle("Sepal.Length by Species") # 그래프 제목
View(mpg) # ggplot에 내장된 데이터
ggplot(mpg, aes(drv, hwy))+
geom_boxplot()+
ggtitle("고속도로 연비 by drv") # 주행거리?
ggplot(mpg, aes(drv, hwy))+
geom_boxplot(fill= c("purple", "green", "navy"), # 3가지 색
width= 0.5)+ # 막대의 넓이
ggtitle("고속도로 연비 by drv") + # 그래프 제목
coord_flip() # 가로 방향 그래프
선그래프 : 시계열자료에 자주 쓰임
View(economics)
ggplot(economics, aes(date, unemploy))+
geom_line() # 기본 선그래프
ggplot(economics, aes(date, unemploy))+
geom_line(size=2, # 선 굵기
lty= 1, #라인 타입
color= "gold")+ # 선의 색깔
ggtitle("unemplyment")+ # 그래프 제목
geom_hline(yintercept=mean(economics$unemploy),
lty= 2) # 평균값 가로선을 넣어라
ggplot(economics, aes(date, pop))+
geom_line(size=2, # 선 굵기
lty= 1, # 라인 타입
color= "gold")+ # 선의 색깔
ggtitle("population") # 그래프 제목
# 일반함수처럼 선을 하나씩 추가하는 형식이 아님.
# 데이터프레임 안에서 가공하고 그룹핑하는 형태
막대그래프
View(Titanic) # 타이타닉 table 형태. DF로 만들어야함
class.type <- c(1,2,3,"crew")
passenger <- c(325, 285, 706, 885)
total <- data.frame(class.type, passenger)
total # 데이터프레임 형태로 만들어줘야 함
ggplot(total, aes(x= class.type, y=passenger))+
geom_bar(stat= "identity",
fill= 'darkgreen')+
ggtitle("Passengers by Class")
ggplot(total, aes(x= class.type, y=passenger))+
geom_bar(stat= "identity",
fill= 'darkgreen')+
coord_flip() # 가로 막대그래프 만들어줘
ggplot(total,
aes(x= "class.type", y= passenger,
fill= class.type))+ # 데이터에 따라 색칠
geom_bar(width= 1,
stat = "identity")+ # 막대그래프 --> 원그래프
coord_polar("y")+ # 파이로 만들어줘
ggtitle("Passengers by Class")+ # 그래프 제목
geom_text(aes(label= paste0(round(passenger/22.01,2), "%")),
position = position_stack(vjust= 0.5))
# fill= class.type 없으면 색깔이 안나옴
# 나눗셈하고 소수점 둘째자리까지 표시한 숫자
# 부채꼴의 중간 지점에 텍스트를 넣어줘
sum(total$passenger)
class.type <- c(1,2,3,"crew", 1,2,3,"crew")
num <- c(122,167,528,673, 203, 118, 178, 212)
survived <- c("d", "d", "d", "d", "s", "s", "s", "s")
survive.by.class <- data.frame(class.type, num, survived)
survive.by.class # 데이터프레임 형태로 만들어줘야 함
ggplot(survive.by.class,
aes(x= class.type, y=num,
fill= survived))+ # 생존 여부에 따라 색칠
geom_bar(stat= "identity")+ # 기본 막대로 데이터 표현
ggtitle("Passengers by Class") # 그래프 제목
ggplot(survive.by.class,
aes(x= class.type, y= num,
fill= survived))+
geom_bar(stat= "identity",
position= position_dodge())+ # 막대를 각각 분리해라
ggtitle("Passengers by Class")
state <- data.frame(state.x77) # 데이터 프레임 형태
View(state)
barplot(state$Income)
barplot(state$Murder)
head(state$Income) # 6행만 보여줘
barplot(head(state$Income), col= "brown")
state <- data.frame(state, Name= rownames(state)) # Name 변수 추가
state$Name <- rownames(state) # 위와 똑같은 결과(열 추가)
View(state) # 50개 주 이름으로 된 열
ggplot(state,
aes(x= Name, y= Income))+
geom_bar(stat= "identity",
fill= "darkgreen")+
ggtitle("미국 주별 소득")
state5 <- state[c(2,4,6,8,10),c(2,9)]
ggplot(state5, # 데이터만 바꿔주기
aes(x= Name, y= Income))+
geom_bar(stat= "identity",
fill= "yellow")+
geom_text(aes(label= Income))+ # 값을 막대에 표시해줘
ggtitle("미국 주별 소득")
ggplot(big3, # 데이터: 인구많은 주 3개
aes(x= Name, y= Income))+
geom_bar(stat= "identity",
fill= "plum",
width = 0.5)
# names.arg / axis 용법
barplot(big3$Income, col= "brown")
axis(1, at=1:3, # x축에 눈금 1,2,3을 그어라
lab=c("Cal", "NY", "Tex")) # 눈금에 캘리 뉴욕 텍사스
barplot(big3$Income, col= "brown",
names.arg= c("Cal", "NY", "Tex")) # 막대그래프에 캘리 뉴욕 텍사스 이름을 붙여줘라
# ggplot에서 fill(면) / color(점, 선, 테두리) 차이
ggplot(iris, aes(x=Petal.Length, fill= Species))+
geom_histogram(position='identity', # 막대 중첩표현
binwidth=0.3, # 히스토그램 구간, 막대넓이
alpha= 0.6) # 막대 색의 투명도
ggplot(iris, aes(x=Petal.Length, color= Species))+ # 테두리
geom_histogram(position='identity', # 막대 중첩표현
binwidth=0.3,
alpha= 0.7)
# 점/선그래프, 여러 색깔로 나타내기
ggplot(Orange, aes(age, circumference))+
geom_point(size=2)
ggplot(Orange, aes(age, circumference,
color = Tree))+ # 점의 색
geom_point(size=2)
ggplot(Orange, aes(age, circumference,
color = Tree))+ # 선의 색
geom_line(size=2)+ # 선그래프
theme(panel.background = element_blank()) # 배경을 없애라
트리맵
install.packages("treemap")
library(treemap)
search() # 어떤 패키지가 깔렸는지 확인
treemap(state, # state 데이터를 써
index= c("Name"), # 주 이름을 넣어줘
vSize= "Area", # 크기가 클수록 area 크다
vColor= "Murder", # 색깔 진할수록 murder 많음
type= "value", # 컬러링 방법
title= "The US Murder") # 제목
treemap(state, # state 데이터를 써
index= c("Name"), # 주 이름을 넣어줘
vSize= "Income", # 크기가 클수록 소득이 크다
vColor= "Population", # 색깔 진할수록 인구 많음
type= "value", # 컬러링 방법
title= "미국 인구와 소득") # 제목
data cleaning
결측값
install.packages("ggplot2")
library(ggplot2)
search() # 패키지가 잘 깔렸는지 확인
Orange
ggplot(Orange, aes(age, circumference))+ # orange 데이터, x,y축
geom_point(color= "Red") # 점을 red로 해줘
ggplot(Orange,
aes(age, circumference))+ # orange 데이터, x,y축
geom_point()+ # 점그래프 그려줘
stat_smooth(method = 'lm') # 추세선(회귀선)을 그어라
ggplot(Orange,
aes(Tree,circumference, color= Tree))+ # 각 tree에 따라 점 색 달라짐
geom_point()
ggplot(Orange,
aes(Tree,circumference))+ # 각 tree의 평균둘레
geom_bar(stat='identity', # 일반 막대그래프-y축 데이터의 값을 높이로
fill= "orange") # 막대를 채워라
cars
ggplot(cars, aes(speed, dist))+ # cars 데이터, x y 축
geom_point()+ # 점그래프 그려줘
stat_smooth(method = 'lm') # 추세선(회귀선)을 그어라
ggplot(cars, aes(x= dist))+ # cars 데이터, x y 축
geom_histogram(fill= "skyblue") # 막대의 색깔
ggplot(iris, aes(x=Petal.Length, fill= Species))+
geom_histogram(position='identity', # 막대 중첩표현
binwidth=0.3) # 막대의 넓이
ggplot(iris, aes(x= Species))+
geom_bar(fill= 'salmon')+
ggtitle("Frequency by Species")
ggplot(iris, aes(x= Species))+
geom_bar(fill= 'salmon')+
coord_flip() # 가로 막대그래프 만들어줘
species<- c("setosa", "versicolor", "virginica")
freq <- c(50, 50, 50)
a<- data.frame(species, freq) # 빈도표 형태의 데이터프레임
a
ggplot(a, aes(x= "species", y= freq, fill= species))+
geom_bar(stat = "identity")+ # 막대를 만들어줘
coord_polar("y")+ # 파이로 만들어줘
geom_text(aes(label= paste0(round(freq/1.50,2), "%")), # 나눗셈하고 소수점 둘째자리까지 표시
position = position_stack(vjust= 0.5)) # 텍스트의 위치는 부채꼴의 가운데에 위치
ggplot(iris, aes(x= Species, y= Sepal.Length))+
geom_boxplot(color= "red") # 테두리를 "" 색으로
ggplot(iris, aes(x= Species, y= Sepal.Length))+
geom_boxplot(fill= "red")+
ggtitle("Sepal.Length by Species") # 그래프 제목
View(mpg) # ggplot에 내장된 데이터
ggplot(mpg, aes(drv, hwy))+
geom_boxplot()+
ggtitle("고속도로 연비 by drv") # 주행거리?
ggplot(mpg, aes(drv, hwy))+
geom_boxplot(fill= c("purple", "green", "navy"), # 3가지 색
width= 0.5)+ # 막대의 넓이
ggtitle("고속도로 연비 by drv") + # 그래프 제목
coord_flip() # 가로 방향 그래프
View(economics)
ggplot(economics, aes(date, unemploy))+
geom_line() # 기본 선그래프
ggplot(economics, aes(date, unemploy))+
geom_line(size=2, # 선 굵기
lty= 1, #라인 타입
color= "gold")+ # 선의 색깔
ggtitle("unemplyment")+ # 그래프 제목
geom_hline(yintercept=mean(economics$unemploy),
lty= 2) # 평균값 가로선을 넣어라
ggplot(economics, aes(date, pop))+
geom_line(size=2, # 선 굵기
lty= 1, # 라인 타입
color= "gold")+ # 선의 색깔
ggtitle("population") # 그래프 제목
# 일반함수처럼 선을 하나씩 추가하는 형식이 아님.
# 데이터프레임 안에서 가공하고 그룹핑하는 형태
View(Titanic) # 타이타닉 table 형태. DF로 만들어야함
class.type <- c(1,2,3,"crew")
passenger <- c(325, 285, 706, 885)
total <- data.frame(class.type, passenger)
total # 데이터프레임 형태로 만들어줘야 함
ggplot(total, aes(x= class.type, y=passenger))+
geom_bar(stat= "identity",
fill= 'darkgreen')+
ggtitle("Passengers by Class")
ggplot(total, aes(x= class.type, y=passenger))+
geom_bar(stat= "identity",
fill= 'darkgreen')+
coord_flip() # 가로 막대그래프 만들어줘
ggplot(total,
aes(x= "class.type", y= passenger,
fill= class.type))+ # 데이터에 따라 색칠
geom_bar(width= 1,
stat = "identity")+ # 막대그래프 --> 원그래프
coord_polar("y")+ # 파이로 만들어줘
ggtitle("Passengers by Class")+ # 그래프 제목
geom_text(aes(label= paste0(round(passenger/22.01,2), "%")),
position = position_stack(vjust= 0.5))
# fill= class.type 없으면 색깔이 안나옴
# 나눗셈하고 소수점 둘째자리까지 표시한 숫자
# 부채꼴의 중간 지점에 텍스트를 넣어줘
sum(total$passenger)
class.type <- c(1,2,3,"crew", 1,2,3,"crew")
num <- c(122,167,528,673, 203, 118, 178, 212)
survived <- c("d", "d", "d", "d", "s", "s", "s", "s")
survive.by.class <- data.frame(class.type, num, survived)
survive.by.class # 데이터프레임 형태로 만들어줘야 함
ggplot(survive.by.class,
aes(x= class.type, y=num,
fill= survived))+ # 생존 여부에 따라 색칠
geom_bar(stat= "identity")+ # 기본 막대로 데이터 표현
ggtitle("Passengers by Class") # 그래프 제목
ggplot(survive.by.class,
aes(x= class.type, y= num,
fill= survived))+
geom_bar(stat= "identity",
position= position_dodge())+ # 막대를 각각 분리해라
ggtitle("Passengers by Class")
state <- data.frame(state.x77) # 데이터 프레임 형태
View(state)
barplot(state$Income)
barplot(state$Murder)
head(state$Income) # 6행만 보여줘
barplot(head(state$Income), col= "brown")
state <- data.frame(state, Name= rownames(state)) # Name 변수 추가
state$Name <- rownames(state) # 위와 똑같은 결과(열 추가)
View(state) # 50개 주 이름으로 된 열
ggplot(state,
aes(x= Name, y= Income))+
geom_bar(stat= "identity",
fill= "darkgreen")+
ggtitle("미국 주별 소득")
state5 <- state[c(2,4,6,8,10),c(2,9)]
ggplot(state5, # 데이터만 바꿔주기
aes(x= Name, y= Income))+
geom_bar(stat= "identity",
fill= "yellow")+
geom_text(aes(label= Income))+ # 값을 막대에 표시해줘
ggtitle("미국 주별 소득")
ggplot(big3, # 데이터: 인구많은 주 3개
aes(x= Name, y= Income))+
geom_bar(stat= "identity",
fill= "plum",
width = 0.5)
# names.arg / axis 용법
barplot(big3$Income, col= "brown")
axis(1, at=1:3, # x축에 눈금 1,2,3을 그어라
lab=c("Cal", "NY", "Tex")) # 눈금에 캘리 뉴욕 텍사스
barplot(big3$Income, col= "brown",
names.arg= c("Cal", "NY", "Tex")) # 막대그래프에 캘리 뉴욕 텍사스 이름을 붙여줘라
# ggplot에서 fill(면) / color(점, 선, 테두리) 차이
ggplot(iris, aes(x=Petal.Length, fill= Species))+
geom_histogram(position='identity', # 막대 중첩표현
binwidth=0.3, # 히스토그램 구간, 막대넓이
alpha= 0.6) # 막대 색의 투명도
ggplot(iris, aes(x=Petal.Length, color= Species))+ # 테두리
geom_histogram(position='identity', # 막대 중첩표현
binwidth=0.3,
alpha= 0.7)
# 점/선그래프, 여러 색깔로 나타내기
ggplot(Orange, aes(age, circumference))+
geom_point(size=2)
ggplot(Orange, aes(age, circumference,
color = Tree))+ # 점의 색
geom_point(size=2)
ggplot(Orange, aes(age, circumference,
color = Tree))+ # 선의 색
geom_line(size=2)+ # 선그래프
theme(panel.background = element_blank()) # 배경을 없애라
트리맵
install.packages("treemap")
library(treemap)
search() # 어떤 패키지가 깔렸는지 확인
treemap(state, # state 데이터를 써
index= c("Name"), # 주 이름을 넣어줘
vSize= "Area", # 크기가 클수록 area 크다
vColor= "Murder", # 색깔 진할수록 murder 많음
type= "value", # 컬러링 방법
title= "The US Murder") # 제목
treemap(state, # state 데이터를 써
index= c("Name"), # 주 이름을 넣어줘
vSize= "Income", # 크기가 클수록 소득이 크다
vColor= "Population", # 색깔 진할수록 인구 많음
type= "value", # 컬러링 방법
title= "미국 인구와 소득") # 제목
data cleaning
결측값
install.packages("treemap")
library(treemap)
search() # 어떤 패키지가 깔렸는지 확인
treemap(state, # state 데이터를 써
index= c("Name"), # 주 이름을 넣어줘
vSize= "Area", # 크기가 클수록 area 크다
vColor= "Murder", # 색깔 진할수록 murder 많음
type= "value", # 컬러링 방법
title= "The US Murder") # 제목
treemap(state, # state 데이터를 써
index= c("Name"), # 주 이름을 넣어줘
vSize= "Income", # 크기가 클수록 소득이 크다
vColor= "Population", # 색깔 진할수록 인구 많음
type= "value", # 컬러링 방법
title= "미국 인구와 소득") # 제목
결측값
NA, 값이 없는 빈 부분
x <- c(1,2,3,4, NA, 6,7, NA,9)
sum(x) # 결측값이 있어서 계산이 안됨
is.na(x) # 데이터에 na가 있는지 확인
sum(is.na(x)) # data에 na가 몇개인가?
sum(x, na.rm = T) # na를 제외하고 계산해줘
y <- c(1,2,3,4, NA, 6,NA)
y1 <- as.vector(na.omit(y)) # NA를 제거하고 새 집합 y1을 만들어줘
y1
y[is.na(y)] <- 0 # na에 0을 넣어 바꿔줘
y
women
women[1,2] <- NA
women[10,1] <- NA
women[13,2] <- NA # 일부러 결측값을 만들어줌
women
colSums(is.na(women)) # women데이터 각 열에 결측값?
rowSums(is.na(women)) # women데이터 각 행에 결측값?
sum(is.na(women)) # women데이터 총 결측값 몇개?
outlier 값
iris
hist(iris$Sepal.Width)
median(iris$Sepal.Width) # 가운데 굵은 선
mean(iris$Sepal.Width)
boxplot(iris$Sepal.Width) # 꽃받침의 넓이를 박스플랏으로
boxplot.stats(iris$Sepal.Width)$out # 아웃라이어어 값이 뭐야?
out.value <- boxplot.stats(iris$Sepal.Width)$out
# 특이값 추출
iris$Sepal.Width[iris$Sepal.Width %in% out.value] <- NA
# sepal width에 있는 특이값을 NA로 바꿔라
iris.new <- iris[complete.cases(iris),]
# NA가 포함된 행 제거
boxplot(iris.new$Sepal.Width) # na 제거된 박스플랏
hist(iris.new$Sepal.Width)
데이터프레임, 특정 변수 기준으로 정렬하기
a <- c(3,1,10,8,9)
order(a) # 크기 순서대로 순위를 매겨라
order(a, decreasing = T)
sort(a) # 오름차순 정렬
sort(a, decreasing = T) # 내림차순 정렬
View(state)
sort(state$Income) # 낮은 주부터 높은 주까지
order(state$Income) # 낮은 주부터 높은주까지(행번호)
which.max(state$Income) # 소득 가장 높은주?
which.min(state$Income) # 소득 가장 낮은주?
rownames(state[24,]) # n행의 이름
rownames(state[2,]) # n행의 이름
rownames(state[c(24,4,18,31,48),]) # c( )행의 이름
rownames(state[c(2,7,20,30,28),]) # c( )행의 이름
sort(state$Population) # 오름차순
sort(state$Population, decreasing = T) # 인구 많은 주부터 낮은 주까지
order(state$Population) # 오름차순
order(state$Population, decreasing = T) # 인구 많은 주부터 낮은 주까지(행번호)
rownames(state[c(5,32,43,38,13),]) # 인구 많은 주
bigstate <- state[order(state$Population, decreasing = T), ]
bigstate
head(bigstate)
big3 <- state[c("California", "New York", "Texas"), c("Income", "Name")] # 원하는 주만 뽑아서 분석
big3
데이터 자르기/ 붙이기
x1 <- split(iris, iris$Species) # 품종별(Species)데이터 분리
x1
x1$virginica # virginica 품종 데이터 확인
x1$setosa
x1$versicolor
subset(iris, Species == "versicolor") # versicolor만 출력
subset(iris, Petal.Width > 2.0) # 조건에 맞는 값만 출력
subset(iris, Petal.Width > 2.0 & Petal.Length > 5.5)
subset(state, Income< 4000) # 소득 4000 이하
subset(state, Income> 5000) # 소득 5000 이상
a <- data.frame(id=c(1,2,3), math1=c(80,70,95))
b <- data.frame(id=c(1,2,3), math2=c(55,40,20))
a
b
merge(a,b, by = "id") # id 를 기준으로 a b 를 병합해
Author And Source
이 문제에 관하여(R 기본 문법), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://velog.io/@myungha_cho/R-기본-문법-pfpoeao9
저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
a <- c(3,1,10,8,9)
order(a) # 크기 순서대로 순위를 매겨라
order(a, decreasing = T)
sort(a) # 오름차순 정렬
sort(a, decreasing = T) # 내림차순 정렬
View(state)
sort(state$Income) # 낮은 주부터 높은 주까지
order(state$Income) # 낮은 주부터 높은주까지(행번호)
which.max(state$Income) # 소득 가장 높은주?
which.min(state$Income) # 소득 가장 낮은주?
rownames(state[24,]) # n행의 이름
rownames(state[2,]) # n행의 이름
rownames(state[c(24,4,18,31,48),]) # c( )행의 이름
rownames(state[c(2,7,20,30,28),]) # c( )행의 이름
sort(state$Population) # 오름차순
sort(state$Population, decreasing = T) # 인구 많은 주부터 낮은 주까지
order(state$Population) # 오름차순
order(state$Population, decreasing = T) # 인구 많은 주부터 낮은 주까지(행번호)
rownames(state[c(5,32,43,38,13),]) # 인구 많은 주
bigstate <- state[order(state$Population, decreasing = T), ]
bigstate
head(bigstate)
big3 <- state[c("California", "New York", "Texas"), c("Income", "Name")] # 원하는 주만 뽑아서 분석
big3
x1 <- split(iris, iris$Species) # 품종별(Species)데이터 분리
x1
x1$virginica # virginica 품종 데이터 확인
x1$setosa
x1$versicolor
subset(iris, Species == "versicolor") # versicolor만 출력
subset(iris, Petal.Width > 2.0) # 조건에 맞는 값만 출력
subset(iris, Petal.Width > 2.0 & Petal.Length > 5.5)
subset(state, Income< 4000) # 소득 4000 이하
subset(state, Income> 5000) # 소득 5000 이상
a <- data.frame(id=c(1,2,3), math1=c(80,70,95))
b <- data.frame(id=c(1,2,3), math2=c(55,40,20))
a
b
merge(a,b, by = "id") # id 를 기준으로 a b 를 병합해
Author And Source
이 문제에 관하여(R 기본 문법), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@myungha_cho/R-기본-문법-pfpoeao9저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)