8. R reshape2패키지를 활용한 Pivoting
setwd('c:/users/is2js/R_da/')
#### Pivoting ####
# 1. reshape2 패키지 설치
install.packages("reshape2")
set.seed(123)
df = data.frame(Obs = 1:4,
A = sample(10:99, size = 4),
B = sample(10:99, size = 4),
C = sample(10:99, size = 4))
df
# 2. melt()함수를 통해 여러개의 칼럼을 --> 한칼럼에 세로로 늘어트린다.
# - melt(df, id.vars = "식별 칼럼명Obs", Variable.name = "여러개의 칼럼을 하나로 뭉친 칼럼명", value.name = "각 값들이 나올 칼럼명")
library("reshape2")
df_melt = melt(df, id.vars = "Obs",
variable.name = "Group", value.name = "Count")
df_melt
# 만약 variable.name(뭉친칼럼명)과 value.name(값 칼럼명)을 안넣어주면 default한 칼럼명(variable칼럼 / value칼럼)이 생긴다.
df_melt_default = melt(df, id.vars = "Obs") # 식별 칼럼명도 안넣어주면, 그것까지 뭉친칼럼으로 들어간다.
# 3. dcast()와 acast()
# melt형태의 df를 값별로 여러개의 칼럼을 만드는데
# 추가적으로, melt된 형태의 데이터를 dcast()를 통해 여러개의 칼럼으로 흐트려 놓으면 각 칼럼별 NA값을 쉽게 확인할 수 있다.
# 게다가 , fill = 인자를 통해 결측값을 채울 수 도 있다.
# 게다가 , fun.aggregate = length(개수),sum(합) 등 요약 정보도 확인할 수 있다.
# - dcast(df_melt, formula = 식별칼럼명 ~ 뭉친칼럼명, value.var = "값을 가진 칼럼명")
# - acast(df_melt, formula = 식별칼럼명 ~ 뭉친칼럼명, value.var = "값을 가진 칼럼명")
# > dcast와 동일하나, 식별칼럼Obs를 없앤 df를 생성
dcast(data = df_melt, formula = Obs ~ Group, value.var = "Count")
acast(data = df_melt, formula = Obs ~ Group, value.var = "Count")
# 데이터를 일부 뺀상태에서 dcast()하여 NA로 만들고 관찰하기
dcast(data = df_melt[-(2:5),], formula = Obs ~ Group, value.var = "Count")
# - 세로로 녹여진 df_melt의 2행~5행까지를 빼먹고 dcast()하면,
# - dcast()결과는 각 칼럼별로 결측값을 쉽게 확인할 수 있다.
dcast(data = df_melt[-(2:5),], formula = Obs ~ Group, value.var = "Count",
fill="NA래요!")
# 4. t()함수 2번 감싸주기를 이용한 1차원 행렬(1,n) --대각선기준 접기--> n차원 행렬(n,1)로 나타내면
# - n행이 되므로 colnames()같은 정보를 한눈에 쉽게 볼 수 있다.
?t
data("CO2")
head(CO2)
df = cbind(CO2, CO2) # cbind()로 칼럼수가 여러개가 되도록 임의 조정
df
colnames(df)
# 그냥 colnames개수만큼(length(colnames(df)) or ncol(df))
# paste0() + letters를 이용하여 다른걸로 바꿔주자.
colnames(df) = paste0("CO2_", sample(LETTERS, length( colnames(df) ) ))
colnames(df)
head(df)
ncol(df)
# *** 일반 원소에 t()를 2번 감싸면 세로로 쭈욱 생긴다.
t(colnames(df))
t(t(colnames(df)))
'한의대 생활 > └ R studio 중급 문법' 카테고리의 다른 글
10. 사용자 정의 함수( 기초 + 응용) (0) | 2018.12.29 |
---|---|
9. beyond for loop - apply() MARGIN=1,2로 FUN=통계class확인 / sapply() 세로 특화 / ifelse(기준칼럼으로 조건문, y, n)로 값 할당 (0) | 2018.12.29 |
7. R 스크립트 파일 관리(*중요*) (0) | 2018.12.29 |
6. R Clean code 작성법 (0) | 2018.12.29 |
5. 속성 확인 및 변환 (0) | 2018.12.29 |