R Programming install & basic¶
- R Install
- Basic R Programming
- Basic Data handling for datamining with R
R & R-Studio install¶
- R-Cran (R) : https://cran.r-project.org/mirrors.html
R-studio (RStudio) : https://www.rstudio.com/products/rstudio/download/
Start R-studio
- 설치한 R-studio를 통해 수행해도 되고 Jupyter notebook에 R-Kernel을 만들어서 사용해도 무관하다.
1. Basic Calculation¶
3 + 4
4 - 2
17 %% 3 # 나머지
6 * 3
7 / 2
7 %/% 2 # 몫
2. Scala(스칼라)¶
- R 에서의 데이터 타입은 문자형, 숫자형, 논리형 등 형태로 존재하는데 이러한 데이터 타입을 하나의 값만 가지는 것을 Scala(스칼라) 라고 한다.
1
"String"
TRUE
FALSE
3. Vector(벡터)¶
- 위의 Scala 값들을 묶어서 표현하는 것을 벡터라고 한다. 같은 데이터 타입의 값들을 여러개 묶어서 표현한다.
- 숫자 + 문자로 벡터를 구성하게 된다면 해당 숫자형은 문자형으로 변환된다.
- 숫자 + 논리형태로 가지게 된다면 논리형의 경우 TRUE -> 1, FALSE -> 0 으로 표현
c(1,2,3)
c("a",2,3)
c(TRUE,1,2)
c("a","b")
c(1, 2, 3) + c(5, 6, 7) # 각 요소끼리 덧셈
c(1, 2, 3) + 5 # 각 요소에 각각 덧셈(5를)
c(1, 2, 3) + c(3, 4) # 길이가 맞지 않을 경우 3, 4 순으로 해서 순서대로 더한다.
c(1, 2, 3,4) + c(3, 4) # 1 + 3, 2 + 4, 3 + 3, 4 + 4
4. Variable(변수)¶
- 이름 그대로 변하는 수이다.
- 우리가 원하는 값을 담고 있는 그릇이라고 생각하면 된다.
- 원하는 그릇에 원하는 음식을 담듯이, 원하는 그릇에 원하는 값을 담으면 된다.
- 이와 반대되는 말이 상수가 있는데 상수는 변하지 않는 수 즉, 한번 담게 되면 고정되는 값이라고 생각하면 된다.
4-1 Assign Variable¶
people <- 40 # 엑셀의 A1, B1 등과 같다고 보면 된다.
people
people <- c(1,2,3)
people
4-2 Delete Variable¶
ls() # 메모리에 저장되어있는 변수 명을 출력.
rm(people)
모든 변수를 삭제 하고 싶다면
rm(list=ls())
4-3 Calculate Variable¶
people <- c(1,2,3)
people * 3
people
# 변수의 값을 연산하고 끝날뿐이지 결과값을 다시 할당하지 않는다면 일회성이라고 생각하면된다.
people <- people * 2
people # 재할당.
5. Indexing¶
- Python과 달리 1부터 시작한다.
- [시작:끝] 끝은 포함한다. 이 또한 파이썬과 다르다. 파이썬의 경우 시작은 포함 끝은 포함하지 않기 때문에.
people[1] # 1번만
people[1:2] # 1번부터 2번까지
6. Function (함수)¶
- 사용자 지정함수 또한 만들어서 사용할 수 있다.
- 함수의 도움말을 알기 위해서는 ?함수명 을 하게 되면 help가 나오게된다.
floor(3.4)
ceiling(2.1)
c(round(3.4),round(3.5))
user_add <- function(a,b){
c <- a + a + b + b
return(c)
}
user_add(1,2)
7. List (리스트)¶
- 벡터의 경우 같은 종류의 데이터 타입만 여러개 가질 수 있다.
- 하지만 리스트의 경우 다른 종류의 데이터 타입을 여러개를 동시에 가질 수 있는 형태의 자료형이다.
- json형태와 비슷하게 key,value 형태로 저장한 후 접근도 가능하다.
a <- list(1,2,3,'a',TRUE)
a
b <- list(a=1,b=3,c=TRUE,d='a')
b
b$a
8. DataFrame(데이터프레임)¶
- 엑셀의 하나의 시트라고 생각하면 될 것 같다.
- 하나의 테이블에 컬럼과 로우가 있듯이 표현되는 데이터 형태이다.
car <- read.csv('automobile.csv')
# 다양한 속성을 통해 header를 가지고 올지, row를 새로 만들지 등을 정할 수 있다.
head(car) # 상위 5줄을 볼 수 있다.
car2 <- read.csv(file.choose()) # R-Studio를통해서 수행하면 된다.
View(car)
# 이 또한 Rstudio를 통해서 하면 된다. 새로운 창을 통해 data를 전체적으로 볼 수 있다.
Size of data¶
dim(car) # rows x columns
Row indexing¶
car[1,]
car[1:5,]
Columns indexing¶
head(car['maker'])
head(car[3]) # 컬럼의 위치를 선택하여서 볼 수 있다.
head(car[c("maker","body")])
head(car[c(3,7)])
head(car[,c(3,7)])
car[1:2,3:7]
Compare values in data¶
subset(car, horsepower > 145)
subset(car, horsepower < 60)
subset(car, horsepower <= 60)
subset(car, horsepower == 60)
head(subset(car, body != 'sedan'))
논리¶
- and
subset(car, horsepower > 100 & fuel == 'diesel')
- or
head(subset(car, body == 'wagon' | wheels == '4wd'))
- not
head(subset(car, !(body == 'wagon' | wheels == '4wd')))
- 보론
dat = data.frame(num=c(36925,36941,12345), name=c('abc', 'def', 'abd'))
dat
subset(dat, num %/% 100 == 369) # 100으로 나눈 몫이 369인 경우
subset(dat, startsWith(as.character(name), 'ab')) # name의 시작이 ab인 경우
subset(dat, endsWith(as.character(name), 'bc')) # name의 끝이 bc인경우
데이터 저장¶
wagon <- subset(car, body=='wagon')
head(wagon)
write.csv(wagon,'wagon.csv')
클립보드에 복사¶
write.table(wagon,'clipboard',sep = '\t') # r_studio 에서 가능.
Statistics¶
max(car$length)
min(car$length)
var(car$length)
sd(car$length)
- Summary
summary(car$length) # 전체 변수에 대해서 다 보려면 $length를 없애면 된다.
is.na(NA)
자주 쓰이는 데이터 다루기 관련 함수¶
- dim : size of dataframe
- nrow : number of rows
- ncol : number of columns
- head : top 5 data of dataframe
- names : name of columns
- table : count of data, 명목데이터에 대해서
문자열 관련 함수¶
- nchar : number of characters(length)
- substr : extract string
- paste : concate strings
- grep : search string in data
- grepl : match strings in lots data and get logical type
- FALSE, TRUE
dplyr¶
- library in R, handling data and getting statistics information
- 복잡한 필터링, 정렬, 변환, 통계를 손쉽게 할 수 있도록 도와주는 패키지
- filter()
- slice()
- arrange()
- select()
- rename()
- distinct()
- mutate()
- transmute()
- summarise() / summarize()
Install Package¶
install.packages('dplyr')
Load Package¶
library(dplyr)
Load data¶
car <- read.csv('automobile.csv')
head(car)
Summarise¶
summarise(car, mean(length))
summarise(car, age=mean(length))
summarise(car, mean(length), mean(width))
summarise(car, mean_car = mean(price))
Chain ( %>% )¶
- dplyr 패키지에서 정의된 연산자
- 여러가지 작접들을 연결하는데 사용.
- x %>% f() 형식으로 결과는 f(x) 와 동일하다.
- x %>% f() %>% g() 결과: g(f(x))
car %>% summarise(mean(length))
Filter¶
car %>% filter(body == 'sedan') %>% head()
car %>%
filter(body=='sedan') %>%
summarise(mean(length))
car %>%
filter(body=='hatchback' & price > 10000) %>%
summarise(mean(engine_size))
Grouping¶
car %>%
group_by(fuel) %>%
summarise(mean(city_mpg))
- 출시 5년 미만인 자동차의 메이커 평균 구매 가격
car %>% filter(horsepower < 100)%>%
group_by(fuel) %>%
summarise(mean(city_mpg))
컬럼더하기(mutate)¶
car %>% mutate(diff_mpg = highway_mpg - city_mpg) %>% head()
컬럼 선택¶
car %>% select(1) %>% head()
행 선택¶
car %>% slice(1:10)
정렬¶
car %>% arrange(symboling) %>% head()
car %>% arrange(desc(symboling)) %>% head()
Join¶
- 두개의 데이터를 결합
x = data.frame(name = c('a','b','c'), v1 = 1:3)
y = data.frame(name = c('b', 'b', 'c', 'd'), v2 = 1:4)
x
y
left_join(x,y) # x의 데이터의 name(같은 이름의 컬럼) 기준으로 결합
right_join(x,y) # y의 데이터의 기준으로.
inner_join(x,y) # x,y 의 name에 동일한 값이 있는 것만
full_join(x,y) # 카디션 곱
semi_join(x,y)
semi_join()¶
return all rows from x where there are matching values in y, keeping just columns from x. A semi join differs from an inner join because an inner join will return one row of x for each matching row of y, where a semi join will never duplicate rows of x.
?semi_join
'BIGDATA > R' 카테고리의 다른 글
[DataMining] 3. 데이터 전처리 (0) | 2017.09.25 |
---|---|
[DataMining] 2. 시각화를 통한 탐색적 데이터 분석(EDA) (0) | 2017.09.16 |
#12. 고급 시각화 (0) | 2016.07.13 |
#11. 기초 시각화 [ R 내장 함수 ] (0) | 2016.07.12 |
#10 .기술통계 [ 예제 ] (0) | 2016.07.12 |
R Programming install & basic¶
- R Install
- Basic R Programming
- Basic Data handling for datamining with R
R & R-Studio install¶
- R-Cran (R) : https://cran.r-project.org/mirrors.html
R-studio (RStudio) : https://www.rstudio.com/products/rstudio/download/
Start R-studio
- 설치한 R-studio를 통해 수행해도 되고 Jupyter notebook에 R-Kernel을 만들어서 사용해도 무관하다.
1. Basic Calculation¶
3 + 4
4 - 2
17 %% 3 # 나머지
6 * 3
7 / 2
7 %/% 2 # 몫
2. Scala(스칼라)¶
- R 에서의 데이터 타입은 문자형, 숫자형, 논리형 등 형태로 존재하는데 이러한 데이터 타입을 하나의 값만 가지는 것을 Scala(스칼라) 라고 한다.
1
"String"
TRUE
FALSE
3. Vector(벡터)¶
- 위의 Scala 값들을 묶어서 표현하는 것을 벡터라고 한다. 같은 데이터 타입의 값들을 여러개 묶어서 표현한다.
- 숫자 + 문자로 벡터를 구성하게 된다면 해당 숫자형은 문자형으로 변환된다.
- 숫자 + 논리형태로 가지게 된다면 논리형의 경우 TRUE -> 1, FALSE -> 0 으로 표현
c(1,2,3)
c("a",2,3)
c(TRUE,1,2)
c("a","b")
c(1, 2, 3) + c(5, 6, 7) # 각 요소끼리 덧셈
c(1, 2, 3) + 5 # 각 요소에 각각 덧셈(5를)
c(1, 2, 3) + c(3, 4) # 길이가 맞지 않을 경우 3, 4 순으로 해서 순서대로 더한다.
c(1, 2, 3,4) + c(3, 4) # 1 + 3, 2 + 4, 3 + 3, 4 + 4
4. Variable(변수)¶
- 이름 그대로 변하는 수이다.
- 우리가 원하는 값을 담고 있는 그릇이라고 생각하면 된다.
- 원하는 그릇에 원하는 음식을 담듯이, 원하는 그릇에 원하는 값을 담으면 된다.
- 이와 반대되는 말이 상수가 있는데 상수는 변하지 않는 수 즉, 한번 담게 되면 고정되는 값이라고 생각하면 된다.
4-1 Assign Variable¶
people <- 40 # 엑셀의 A1, B1 등과 같다고 보면 된다.
people
people <- c(1,2,3)
people
4-2 Delete Variable¶
ls() # 메모리에 저장되어있는 변수 명을 출력.
rm(people)
모든 변수를 삭제 하고 싶다면
rm(list=ls())
4-3 Calculate Variable¶
people <- c(1,2,3)
people * 3
people
# 변수의 값을 연산하고 끝날뿐이지 결과값을 다시 할당하지 않는다면 일회성이라고 생각하면된다.
people <- people * 2
people # 재할당.
5. Indexing¶
- Python과 달리 1부터 시작한다.
- [시작:끝] 끝은 포함한다. 이 또한 파이썬과 다르다. 파이썬의 경우 시작은 포함 끝은 포함하지 않기 때문에.
people[1] # 1번만
people[1:2] # 1번부터 2번까지
6. Function (함수)¶
- 사용자 지정함수 또한 만들어서 사용할 수 있다.
- 함수의 도움말을 알기 위해서는 ?함수명 을 하게 되면 help가 나오게된다.
floor(3.4)
ceiling(2.1)
c(round(3.4),round(3.5))
user_add <- function(a,b){
c <- a + a + b + b
return(c)
}
user_add(1,2)
7. List (리스트)¶
- 벡터의 경우 같은 종류의 데이터 타입만 여러개 가질 수 있다.
- 하지만 리스트의 경우 다른 종류의 데이터 타입을 여러개를 동시에 가질 수 있는 형태의 자료형이다.
- json형태와 비슷하게 key,value 형태로 저장한 후 접근도 가능하다.
a <- list(1,2,3,'a',TRUE)
a
b <- list(a=1,b=3,c=TRUE,d='a')
b
b$a
8. DataFrame(데이터프레임)¶
- 엑셀의 하나의 시트라고 생각하면 될 것 같다.
- 하나의 테이블에 컬럼과 로우가 있듯이 표현되는 데이터 형태이다.
car <- read.csv('automobile.csv')
# 다양한 속성을 통해 header를 가지고 올지, row를 새로 만들지 등을 정할 수 있다.
head(car) # 상위 5줄을 볼 수 있다.
car2 <- read.csv(file.choose()) # R-Studio를통해서 수행하면 된다.
View(car)
# 이 또한 Rstudio를 통해서 하면 된다. 새로운 창을 통해 data를 전체적으로 볼 수 있다.
Size of data¶
dim(car) # rows x columns
Row indexing¶
car[1,]
car[1:5,]
Columns indexing¶
head(car['maker'])
head(car[3]) # 컬럼의 위치를 선택하여서 볼 수 있다.
head(car[c("maker","body")])
head(car[c(3,7)])
head(car[,c(3,7)])
car[1:2,3:7]
Compare values in data¶
subset(car, horsepower > 145)
subset(car, horsepower < 60)
subset(car, horsepower <= 60)
subset(car, horsepower == 60)
head(subset(car, body != 'sedan'))
논리¶
- and
subset(car, horsepower > 100 & fuel == 'diesel')
- or
head(subset(car, body == 'wagon' | wheels == '4wd'))
- not
head(subset(car, !(body == 'wagon' | wheels == '4wd')))
- 보론
dat = data.frame(num=c(36925,36941,12345), name=c('abc', 'def', 'abd'))
dat
subset(dat, num %/% 100 == 369) # 100으로 나눈 몫이 369인 경우
subset(dat, startsWith(as.character(name), 'ab')) # name의 시작이 ab인 경우
subset(dat, endsWith(as.character(name), 'bc')) # name의 끝이 bc인경우
데이터 저장¶
wagon <- subset(car, body=='wagon')
head(wagon)
write.csv(wagon,'wagon.csv')
클립보드에 복사¶
write.table(wagon,'clipboard',sep = '\t') # r_studio 에서 가능.
Statistics¶
max(car$length)
min(car$length)
var(car$length)
sd(car$length)
- Summary
summary(car$length) # 전체 변수에 대해서 다 보려면 $length를 없애면 된다.
is.na(NA)
자주 쓰이는 데이터 다루기 관련 함수¶
- dim : size of dataframe
- nrow : number of rows
- ncol : number of columns
- head : top 5 data of dataframe
- names : name of columns
- table : count of data, 명목데이터에 대해서
문자열 관련 함수¶
- nchar : number of characters(length)
- substr : extract string
- paste : concate strings
- grep : search string in data
- grepl : match strings in lots data and get logical type
- FALSE, TRUE
dplyr¶
- library in R, handling data and getting statistics information
- 복잡한 필터링, 정렬, 변환, 통계를 손쉽게 할 수 있도록 도와주는 패키지
- filter()
- slice()
- arrange()
- select()
- rename()
- distinct()
- mutate()
- transmute()
- summarise() / summarize()
Install Package¶
install.packages('dplyr')
Load Package¶
library(dplyr)
Load data¶
car <- read.csv('automobile.csv')
head(car)
Summarise¶
summarise(car, mean(length))
summarise(car, age=mean(length))
summarise(car, mean(length), mean(width))
summarise(car, mean_car = mean(price))
Chain ( %>% )¶
- dplyr 패키지에서 정의된 연산자
- 여러가지 작접들을 연결하는데 사용.
- x %>% f() 형식으로 결과는 f(x) 와 동일하다.
- x %>% f() %>% g() 결과: g(f(x))
car %>% summarise(mean(length))
Filter¶
car %>% filter(body == 'sedan') %>% head()
car %>%
filter(body=='sedan') %>%
summarise(mean(length))
car %>%
filter(body=='hatchback' & price > 10000) %>%
summarise(mean(engine_size))
Grouping¶
car %>%
group_by(fuel) %>%
summarise(mean(city_mpg))
- 출시 5년 미만인 자동차의 메이커 평균 구매 가격
car %>% filter(horsepower < 100)%>%
group_by(fuel) %>%
summarise(mean(city_mpg))
컬럼더하기(mutate)¶
car %>% mutate(diff_mpg = highway_mpg - city_mpg) %>% head()
컬럼 선택¶
car %>% select(1) %>% head()
행 선택¶
car %>% slice(1:10)
정렬¶
car %>% arrange(symboling) %>% head()
car %>% arrange(desc(symboling)) %>% head()
Join¶
- 두개의 데이터를 결합
x = data.frame(name = c('a','b','c'), v1 = 1:3)
y = data.frame(name = c('b', 'b', 'c', 'd'), v2 = 1:4)
x
y
left_join(x,y) # x의 데이터의 name(같은 이름의 컬럼) 기준으로 결합
right_join(x,y) # y의 데이터의 기준으로.
inner_join(x,y) # x,y 의 name에 동일한 값이 있는 것만
full_join(x,y) # 카디션 곱
semi_join(x,y)
semi_join()¶
return all rows from x where there are matching values in y, keeping just columns from x. A semi join differs from an inner join because an inner join will return one row of x for each matching row of y, where a semi join will never duplicate rows of x.
?semi_join
'BIGDATA > R' 카테고리의 다른 글
[DataMining] 3. 데이터 전처리 (0) | 2017.09.25 |
---|---|
[DataMining] 2. 시각화를 통한 탐색적 데이터 분석(EDA) (0) | 2017.09.16 |
#12. 고급 시각화 (0) | 2016.07.13 |
#11. 기초 시각화 [ R 내장 함수 ] (0) | 2016.07.12 |
#10 .기술통계 [ 예제 ] (0) | 2016.07.12 |