r을 조금씩 공부하면서 작고 소소한 부분을 수정하고 싶어지네요..
할 수 있는 분석들은 굉장히 많은데 나에게 맞는 데이터를 먼저 만들어야 한다는 압박감이 계속듭니다.
이번 포스팅에서는
데이터 프레임을 핸들링하면서 행이름을 변경하기 위해
공부한 내용을 적어보고자 합니다.
먼저 필요한 패키지는 특별히 없습니다.
2020/11/03 - [공부/R] - [R]r에서 엑셀파일, CSV파일 불러오기
제가 몇일전에 작성했던 엑셀파일과 CSV파일을 불러오는 내용인데요.
여기서 사용했던 코드를 이용할 것입니다.
참고하실 분들은 링크로 들어가보세요~
먼저 파일을 불러와줍니다.
저는 임의로 생성한 파일을 가지고 분석을 해보았습니다.
> library(readxl)
> data <- data.frame(read_xlsx(path = "c:/123.xlsx", col_names = TRUE))
New names:
* `` -> ...1
> data
...1 a b c d
1 car 10 56 54 65
2 train 65 21 65 32
3 cycle 98 11 98 21
4 license 1 2 5 54
5 start 23 45 7 8
6 demo 49 84 32 96
7 banana 54 6 12 5
> str(data)
'data.frame': 7 obs. of 5 variables:
$ ...1: chr "car" "train" "cycle" "license" ...
$ a : num 10 65 98 1 23 49 54
$ b : num 56 21 11 2 45 84 6
$ c : num 54 65 98 5 7 32 12
$ d : num 65 32 21 54 8 96 5
...1이라는 열 이름은 r에서 임의로 생성해준 이름입니다.
readxl 코드를 이용해서 불러온 파일을 데이터프레임으로 만들어서 data라는 이름으로 지정해주었습니다.
5개의 열과 7개의 행이 생성된 것을 확인할 수 있습니다.
여기서 오늘의 핵심
1열을 행이름으로 두고 싶은데...?
> rownames(data)
[1] "1" "2" "3" "4" "5" "6" "7"
> row.names(data) <- c("car","train","cycle","license","start","demo","banana" )
> data
...1 a b c d
car car 10 56 54 65
train train 65 21 65 32
cycle cycle 98 11 98 21
license license 1 2 5 54
start start 23 45 7 8
demo demo 49 84 32 96
banana banana 54 6 12 5
그래서 먼저 rownames를 이용해서 지금 열이 어떻게 지정되어 있는지 확인하고
row.name()을 이용해서 data안에 car, train, cycle 등의 이름으로 변경해주었습니다.
그 결과 행 이름이 원하는 내용으로 변경되었습니다.
그러면 1열이 필요가 없어졌잖아요?
이제 지워줘 보도록 하겠습니다.
> data <- data[ ,-1]
> data
a b c d
car 10 56 54 65
train 65 21 65 32
cycle 98 11 98 21
license 1 2 5 54
start 23 45 7 8
demo 49 84 32 96
banana 54 6 12 5
그러면 제가 원하는 데이터 프레임으로 데이터를 수정해보았습니다.
더 간편하고 쉬운방법이 있습니다만,
실전에서 엑셀을 이용하다가 급하게 r에서 분석할 때에는
지금과 같은 상황이 많이 발생하실 겁니다.
저도 요즘에는 에초에 엑셀에서 작업할 때 r에서 분석하기 쉽도록 데이트를 정리하고 있는데요.
그렇지 않은 경우에는 다음과 같은 방법으로 데이터를 만져도 좋을 거 같다는 생각이드네요..^^
추가 분석으로 상관성 분석을 해보았습니다.
제가 이렇게 데이터 프레임을 만진 이유는 상관성 분석을 하기 위해서 인데요.
상관성 분석을 위해서는 다양한 방법이 있습니다만,
저는
ggcorrplot(), Hmisc()
를 이용해서 분석을 해보았습니다.
> data_corr <- round(cor(data), 1)
> ggcorrplot(data_corr, hc.order = TRUE, type = "lower", lab = TRUE,
+ lab_size = 3, method = "circle",
+ colors = c("black", "grey", "white"),
+ title = "example",
+ ggtheme=theme_classic)
위에서 핸들링한 데이터로 상관성 분석한 결과를 그래프로 시각화 해보았습니다.
저는 상관성 분석을 논문에 제출할 때 대부분 데이블로 제시했었던 경험이 많았었습니다.
항상 그래프로 한번에 보여줄 수 있는 재미있는 방법이 없을까..
고민을 했었는데
r에서는 다양하게 분석이 가능하더라구요.
현재 이 그림은 상관성 분석결과로 상관계수를 색상으로 표현한 결과 입니다.
p 값을 구하고자 한다면...?
> library(Hmisc)
> corr.test <- rcorr(as.matrix(data), type = "pearson")
> corr.test
a b c d
a 1.00 -0.19 0.71 -0.30
b -0.19 1.00 -0.03 0.67
c 0.71 -0.03 1.00 0.02
d -0.30 0.67 0.02 1.00
n= 7
P
a b c d
a 0.6880 0.0746 0.5109
b 0.6880 0.9409 0.1002
c 0.0746 0.9409 0.9642
d 0.5109 0.1002 0.9642
> p <- as.matrix.data.frame(corr.test$P)
> p
[,1] [,2] [,3] [,4]
[1,] NA 0.6880023 0.07458542 0.5109489
[2,] 0.68800228 NA 0.94091754 0.1001940
[3,] 0.07458542 0.9409175 NA 0.9642368
[4,] 0.51094889 0.1001940 0.96423676 NA
다음과 같이 구할 수 있습니다.
Hmisc를 이용하면 상관계수와 p값을 한번에 볼 수 있는 장점이 있습니다.
2개의 값중에서 p값만 보고 싶다면
p값만 따로 data.frame으로 만들어서 따로 확인 할 수 도 있습니다.
적은 분들이더라도 제 포스팅 내용이 도움이 되었으면 합니다...^^
그럼 오늘 하루도 힘내세요!!
'공부 > R & Python' 카테고리의 다른 글
[R]for 함수를 활용한 반복문 만들기 (0) | 2020.12.20 |
---|---|
[R]for 함수를 이용한 데이터 자동 계산 (0) | 2020.12.19 |
[R]데이터 핸들링 연습(2020.12.15) (0) | 2020.12.15 |
[R]r에서 엑셀파일, CSV파일 불러오기 (0) | 2020.11.03 |
[R]r에서 패키지(package) 다운받는 방법과 엑셀 불러오는 방법 (0) | 2020.11.02 |