Notice
Recent Posts
Recent Comments
Link
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
Archives
Today
Total
관리 메뉴

데이터분석 공부하기

R- Rstudio in Mas OC 본문

통계

R- Rstudio in Mas OC

Eileen's 2022. 1. 3. 22:55
R_basics
  • 작업 디렉토리(Working directory)
    - 작업 디렉토리 설정 : setwd("")     *R : Misc -> Changing Working Directory(or Command+D)
    - 현재 지정된 작업 디렉터리 찾기 : getwd()
  • 패키지(Package) : R을 새버전으로 업그레이트 한 것이 아니라면, 설치는 1번, 참조는 매 R세션마다 진행
    -설치(install) : install.packages("")  *R: Packages & Data -> Package Installer
    -참조(reference) : library()
    * 함수의 중의성 : 동일한 함수가 두 패키지에 있는 경우, 패키지 :: 함수로 소속을 명시해야한다.
  • 도움말 기능 : help(함수이름), ?함수이름 *단, 함수를 포함한 패키지가 적재(설치-참조)되었을 경우만 실행가능
  • Splitting a code to multiple lines : ex) '+'/ ']'를 둘째줄 시작점이 아닌, 첫째 줄 끝나는 점에 두어 다음 라인이 있다는 것을 명시
    1) leave a bracket open on the previous line, 2) leave with an operator on the previous line
  • 객체 생성
    - 객체 생성(concatenate function) : c()
    - 변수생성 : 객체(변수) 이름 <- c(list)
    - 날짜 변수(as.Date) : yyyy-mm-dd를 문자열로 as.Date에 감싸면, 날짜별 계산도 가능한 날짜 객체가 생성된다.
                    ex) birth_date <- as.Date(c("yyyy-mm-dd", "2000-01-02")
  • 변수 결합 :
     1) data.frame() : df <- data.frame(변수이름 = 변수1, 변수이름 = 변수2), 범용적/ 서로 다른 형식의 변수 저장 
        -열 접근(열생성,삭제,수정 가능) : 데이터프래임$변수명
        -변수이름(행이름) 출력 : names(df)
     2) list() : elements에 일련 번호를 붙여 정리(이름 1,2,3, 나이 1,2,3 순으로 나열)
     3) cbind() : 열(column)별 객체 생성, 같은 변수 결합 시 유용(문자+숫자열 시, 모두 문자화(""))
  • 변수 계산(+, _, *, /) : korea$fatherhood_age <- korea$age - korea$child_age
  • 자료의 조직화 :
    -wide format: 가장 논리적이고 일반적인 구조(각 행-한 개체의 자료, 각 열-한 변수, ID/DV구분X(개별 열로 배치))
    -long format(molten) : '개체 - 색인변수(index variable) - 점수'(p.137) 구조로 서로 다른 변수의 점수가 한 열에 배치되는 형태
    -자료 입력 : R에서는 주로 다른 출처는 다른 행(사람A, 사람B), 각 출처의 자료는 한 행의 서로 다른 열(사람A의 나이, 성별)로 정리
    - 부호화변수(coding variable): a.k.a. 그룹화 변수(grouping variable), 요인(factor)
       서로 다른 자료 그룹을 나타내는 수치/번호를 담는 변수(수치이지만 명목변수);
       한 열 내 그룹간 차이를 나타내는 변수(ex- 성별, 실험/대조군, 사는 도시)
    * Excel 입력을 R로 가져올때, 수치로 가져온 뒤, 요인으로 변환하는 것이 좋다(문자로 가져오면 R이 항상 잘 요인으로 인식X)
       -부호화변수 생성방법:
         1) 그룹별로 사례가 모여있는 경우, 반복하는 함수를 사용한다: rep(반복할 수치, 반복 횟수), job <- c(rep(1,5), rep(2,5)
         2) 요인으로 변환한다:
            factor(변수, levels, labels), job <- factor(job, levels = c(1:2), labels = c("Lecturer", "Student"))
         1-2) general(factor) level(gl)함수사용 : gl(수준수, 각 수준의 사례수, 총 사례수, labels) 
                 job <- gl(2, 5, labels = c("Lecturer", "Student"))
    - 요인 수준 및 순서 찾기 : levels(job) >> "Lecturer" "Student"
    - 변수 수준의 이름 변경 : levels(job) <- c("Medical Lecturer" "Medical Student")
    더보기
    TIPS
    - 동등관계를 나타날때는 반드시 '=='를 사용한다.('='사용 시 많은 에러)
    - 명명관례(naming convention) : 1) concise, 2) meaningful, 3)start with 소문자, 4) . or _로 나누기(링크참고)
        https://dialektike.github.io/Rguide.xml
        http://adv-r.had.co.nz/Style.html
Import, Save, Manipulate Data
  • Importing Data: 
    1. 자료를 입력한 소프트웨어에서 R과 충돌되지 않을 순수 텍스트 형식파일로 저장한다 : Excel(.txt), Spss(.dat), .csv
    2. 불러오기 : .txt/.dat -> read.delim/ .csv -> read.csv
       1) df <- read.csv("파일이름.확장자", header = TRUE) *단, 작업디렉토리에 넣지 않았으면 구체적 path를 명시해야함 
       2) df <- read.csv(file.choose(), header = TRUE) *대화상자가 나오므로, 파일을 선택해서 불러옴
    3. 요인변환 : 날짜, 수치 등 factor() 함수로 요인으로 변환
    *) 주의할 점 : 변수이름에 빈칸 X, 결측치(NA로 입력 필요), 요인의 순서 변경
            - R이 임의로 요인의 순서를 만드는데, 이 경우 변경이 필요할 수 있다 (ex> 1. 석사, 2.학부, 3.박사)
            - study_course <- factor(study_course, levels = levels(study_course)[c(2, 1, 3)])
    *) SPSS자료 불러오기(read.spss()) : p.127 (요인설정을 그대로 가지고 올 수 있음; foreign패키지 설치 및 설정, 날짜 변환 필요)
    *) R Commander(rcmdr)로 불러오기 : p.128

  • Saving Data: 
    -탭이나 코마 분리 파일로 만드는 것이 타소프트웨어와 호환/유연성이 좋다
    탭 분리(.txt, .dat) : write.table(df, "파일이름.txt", sep = "\t", row.names = FALSE).   
                  #row.name : 행번호 표시 열 포함여부(R은 아무 이름도 붙이지 않기에 포함하면 변수 이름들이 어긋나 있다)
    코마분리(.csv) : write.csv(df, "파일이름.txt")

  • Manipulating Data(data selection) : 
    -conditional filtering :
    1) new_df <- df[rows, columns]  /  (row) new_df <- df[df$factor == "'']      
          ex) lecturer_personality <- lecturer_data[ , c("friends", "neurotic")] #condition on columns, all rows
          ex) lecturerOnly <- lecturer_data[lecturer_data$job == "lecturer", ] #condition on rows, all columns
          ex) alcohol_personality <- lecturer_data[lecturer_data$alcohol > 10, c("friends", "alcohol")]
    2) subset() : new_df <- subset(df, 조건(or 조건&조건), select = c(변수 목록))
          ex) alcohol_personality <- subset(lecturer_data, lecturer_data$alcohol > 10 & friends < 3, select = c("friends", "alcohol"))

  • Reshaping : 
    -Dataframe & Matrix(행렬)
         -R 함수 중 df가 아닌 행렬을 인자로 받는 경우 -> df를 matrix로 변환 : matric <- as.matric(df)
         -matrix : 문자/날짜 X, 수치Only - df 내 수치 자료만 선택해서 변환해야함 
    -wide to long/molten format : cast()/melt() are in reshape package
         - to wide format : unstack(df, select = c(변수목록)/ cast(df, id + id ~variable, value = "")
         - to long format : stack()/ melt(df, id = c(), measured = c());
         *) id : 변하지 않는 변수 ex-person number, gender etc.
             variable : 가변적이고 점수가 의미하는 바를 명시, 색인변수(index variable) ex-1개월 만족도, 3개월만족도, 6개월 만족도
             value :  가변적 점수, 결과변수(outcome variable) ex-각각 점수(20점, 60점, 10점)
         *) unstacked format에서 stack format으로 변환한뒤 다시 unstack하는 경우엔 변수이름을 기억하므로 다시 지정할 필요 X,
             지정이 필요한 경우, unstack(df, outcome variable ~ index variable) 
             

 

출처 : Discovering Statistics Using R