이끼네

[7월 11일] R 스터디 본문

연구방법_통계/R

[7월 11일] R 스터디

이끼네 2023. 7. 11. 19:35

오늘은 dplyr 패키지를 한 번 알아보도록 하자.

install.packages("dplyr")

library(dplyr)

 

ctrl + shift + M : %>% 합성 함수?

 

1. 데이터 %>% mutate(new=old+old) 

mutate() 함수는 dplyr 패키지에서 제공되는 함수로, 데이터프레임의 열(column)을 변환하거나 새로운 열을 추가하는 데 사용됩니다.
  • dt<-dt %>% mutate(priv=E.priv+M.priv) 
  • dt<-dt %>% mutate(priv=E.priv+M.priv, .after = M.priv) (.after, .before = 변수 위치 넣을 곳 결정)
  •  dt<-dt %>% mutate(newK = K.score/10)
  • dt<-dt %>% mutate(SCHID=c(rep("A", 60),
                          rep("B", 60),
                          rep("C", 60),
                          rep("D", 60),
                          rep("E", 60)),
                          .before=genderR)

 

2. mutate()와 조합 : recode()

recode() 함수는 주어진 값들을 다른 값으로 바꾸는 기능을 제공합니다. 일반적으로 주어진 값들을 조건에 따라 변환하거나 대체할 때 사용됩니다.

recode(변수, “기존값1”=“새 값1”, “기존값2“=“새 값2”… )

  •   dt<-dt %>% mutate( gender=recode_factor(genderR, "1"="female", "0"="male"))

3. mutate()와 조합 : case_when()

  • 형식 : case_when(조건1~"값1",... ,TRUE~"low")
  • dt<-dt%>%mutate(M.score.rank=case_when(M.score>=80 ~ "high", TRUE~"low")
#을 누르면 주석으로 쓸 수 있음.
#### title #### : #을 4개를 붙이면, 목차를 하나 만들 수 있다. 그리고 화살표 누르면 코드 접을 수 있음.

4. mutate()와 조합: na_if()

  • 형식 : na_if(변수, 결측지정값) 이거 하면 NA로 입력된다고!
  • dt<-dt%>%mutate(K.int1=na_if(K.int1,-9))
  • 심화 : dt<-dt%>%mutate(across(genderR:M.score,~na_if(.,-9)))
결측에 대한 코드가 각각 다를 수 있음. 예를 들어, 체계적인 결측!
그래서 코드북을 잘 살펴보고 코드를 입력하는 것이 필요함. 

5. mutate()와 조합 : rowwise()

  • rowwise() : '행 단위'로 인식하라는 명령어 (이거 안하면 사람 전체 평균이 구해진다!)

dt<-dt %>% rowwise() %>% mutate( K.int= mean(c(K.int1,K.int2,K.int3), na.rm = T),

                                                           M.int= mean(c(M.int1,M.int2,M.int3), na.rm = T),

                                                           E.int= mean(c(E.int1,E.int2,E.int3), na.rm = T),

                                                           .before = K.int1 ) %>% ungroup() (이거 써서 행단위 계산 꼭 꺼야된다!!!)

마지막으로, ungroup() 함수를 사용하여 행 단위 연산을 종료하고 데이터프레임을 기본 동작으로 돌려놓습니다. 이렇게 하면 'dt' 데이터프레임에 새로운 열들이 추가되고, 행 단위 연산 모드가 해제됩니다

6. filter()

  • 데이터%>%filter("조건") 데이터 객체가 하나 더 생기는거야!
  • dt.female <- dt %>% filter(gender==“female”) 
  • dt.Mhigh <- dt %>% filter(M.score > mean(M.score, na.rm=T) # '데이터명$‘ 생략!
  • dt.A <- dt %>% filter(region=="small" & M.priv==0)
  • dt.A <- dt %>% filter(region=="small") %>% filter(M.priv==0)
  • dt.B <- dt %>% filter(K.score<50 | M.score<50)

7. select()

  • 데이터 %>% select(변수, 변수,.../ 또는 특정 조건) 데이터 객체가 하나 더 생기는거야!
  • dt.scores <- dt %>% select(K.score, M.score, E.score)
  • dt.scores <- dt %>% select(contains("score"))
  • dt.cleaned <- dt %>% select(-genderR, -regionR) %>% select(!(ends_with(c("1","2","3")))
  • 파란색 처럼 다양한 조합을 사용해서 변수를 선택할 수 있어!

8. summarise()

  • 데이터%>%summarise(이름=통계량함수(변수),...) 데이터 객체가 하나 더 생기는거야!

dt.cleaned %>% summarise(M.mean= mean(M.score, na.rm = T),

                                              M.max=max(M.score, na.rm = T),

                                              M.min=min(M.score, na.rm = T),

                                              n= n()-sum(is.na(M.score)) ) 결측된 값의 합만큼을 빼서 계산해줘 = 유효사례 수!

9. group_by()

  • 그룹 별로 데이터 통계량을 제공해줘! 이거 유.용.하.다!
  • 근데, 이거 M.min 할 때, 결측값을 안 빼면, 조꼼 이상한 결과 나올듯!
  • rowwise()는 gourp_by()의 일종 (각 행을 그룹으로 인식)
반응형

'연구방법_통계 > R' 카테고리의 다른 글

[R 스터디] ggplot2 관련 아이디어 링크  (0) 2023.07.31
[7월 25일] R 스터디  (0) 2023.07.25
[7/18] R 스터디  (0) 2023.07.18
2. [7월 4일] R 스터디  (0) 2023.07.04
R과 R Studio 다운로드 받기  (0) 2023.07.03