4-4. Rmarkdown 칼럼명변경 +range() + 사용자정의함수로 scaling
2019. 2. 21. 11:37
R Notebook
칼럼명 확인과 변경
# 데이터 준비
iris2 <- iris
head(iris2)
# 칼럼명확인
names(iris2)
## [1] "Sepal.Length" "Sepal.Width" "Petal.Length" "Petal.Width"
## [5] "Species"
# 칼럼명 변경
names(iris2) <- c( "first", "second", "third", "fourth", "fifth")
names(iris2)
## [1] "first" "second" "third" "fourth" "fifth"
사용자 정의함수로 ( 반복적인 작업인 ) scaling 해보기
- 정규분포에서 random한 숫자 10를 뽑아 4개의 칼럼 만들기
- 그 값들을 scaling을 통해 0~1사이 값으로 만들기
- x - min(x) / max(x) - min(x) => 분모가 가장 크므로 항상 1보다 작다.
# tibble을 활용한 데이터프레임 만들기
# library(tibble)
# 라이브러리 적용과 동시에 해당 함수 사용하기 package :: function
df <- tibble::tibble(
a = rnorm(10),
b = rnorm(10),
c = rnorm(10),
d = rnorm(10)
)
head(df)
summary(df)
## a b c d
## Min. :-1.5702 Min. :-1.55135 Min. :-1.97816 Min. :-1.0510
## 1st Qu.:-0.6281 1st Qu.:-0.52394 1st Qu.:-1.05749 1st Qu.:-0.2120
## Median : 0.4213 Median : 0.21181 Median :-0.23076 Median : 0.3042
## Mean : 0.1132 Mean : 0.06085 Mean :-0.03817 Mean : 0.3449
## 3rd Qu.: 0.7566 3rd Qu.: 0.83831 3rd Qu.: 1.02052 3rd Qu.: 0.7530
## Max. : 1.8824 Max. : 1.32477 Max. : 2.16831 Max. : 1.7938
# scaling은 각 칼럼마다 해줘야하므로 반복적이다.
(df$a - min(df$a, na.rm = T)) / (max(df$a, na.rm = T) - min(df$a, na.rm = T))
## [1] 0.447926340 0.002240828 0.680114530 0.583405776 0.214523807
## [6] 1.000000000 0.570234402 0.000000000 0.721868086 0.655403845
df$a <- (df$a - min(df$a, na.rm = T)) / (max(df$a, na.rm = T) - min(df$a, na.rm = T))
df$b <- (df$b - min(df$b, na.rm = T)) / (max(df$b, na.rm = T) - min(df$b, na.rm = T))
df$c <- (df$c - min(df$c, na.rm = T)) / (max(df$c, na.rm = T) - min(df$c, na.rm = T))
df$d <- (df$d - min(df$d, na.rm = T)) / (max(df$d, na.rm = T) - min(df$d, na.rm = T))
head(df)
# range()함수는 [1]에는 최소값 [2]에는 최대값을 내포한다.
rng <- range( rnorm(10) , na.rm = T)
rng[1] # 최소값
## [1] -0.7202099
rng[2] # 최대값
## [1] 1.028419
# 사용자 정의함수로 scaling 정의하기
rescale <- function (x){
rng <- range(x, na.rm = T)
( x- rng[1] ) / ( rng[2] - rng[1])
}
#테스트해보기
rescale(df$a)
## [1] 0.447926340 0.002240828 0.680114530 0.583405776 0.214523807
## [6] 1.000000000 0.570234402 0.000000000 0.721868086 0.655403845
rescale( c(0, 5, 10) )
## [1] 0.0 0.5 1.0
# 각 칼럼마다 적용해보기
df$a <- rescale(df$a)
df$b <- rescale(df$b)
df$c <- rescale(df$c)
df$d <- rescale(df$d)
head(df)
'한의대 생활 > └ 통계에 대한 나의 정리' 카테고리의 다른 글
4-6. 범주형-범주형의 빈도에 대한 독립성(연관성) 검정(카이제곱, Exact, trend test) (1) | 2019.02.21 |
---|---|
4-5. 상관관계(계수, 산점도), t-test, anova 간단 복습 (0) | 2019.02.21 |
4-3. Rmarkdown ANOVA 와 interactionplot (1) | 2019.02.21 |
4-2. Rmarkdown T-test (0) | 2019.02.20 |
4-2. 3집단 이상의 (숫자형)분석 ANOVA (0) | 2019.02.19 |