【R】고정 길이 데이터(.txt)의 연속 읽기와 Stata 데이터(.dta)로의 출력

6677 단어 R
  • 다음과 같은 파일명을 가지는 고정 길이 데이터가 있다고 한다: data_H22.txt, data_H23.txt, ..., data_H30.txt, data_R01.txt
  • 각 변수의 길이 (width)와 변수 이름은 다른 CSV 파일 (varname_H22.csv, ...)에 정의되어 있습니다
  • 예를 들면 고정 길이 데이터의 1행째가 「xxxyyzzzz...」라고 하고 있으면(자), 최초의 4 문자가 변수 x, 다음의 2 문자가 변수 y, 다음의 4 문자가 변수 z라고 하는 상태 . 이 경우 varname_*.csv는 다음과 같은 내용.
  • 다음 R 코드는 이러한 고정 길이 데이터를 연속적으로 읽고 Stata 데이터 형식으로 출력합니다.

  • txt2data.R
    # install.packages("haven", dependencies = TRUE) # install package if necessary
    #install.packages("tidyverse")
    library(tidyverse)
    library(haven)
    
    setwd("C:/Users/CurrentDirectory") 
    
    primes_list <- list("H22", "H23", "H24", "H25", "H26", "H27", "H28", "H29", "H30", "R01")
    
    for (y in primes_list) {
      datafilename.input <- paste("data_", y, ".txt", sep = "") # filename: data_*.txt 
      varfilename <- paste("varname_", y, ".csv", sep = "") # filename: varname_*.txt
    
      d.varname <- read.csv(varfilename) # import varname file
      width <- d.varname$column  # vector of width
      varname <- d.varname$varname # vector of variable name
    
      data <- read.fwf(datafilename.input, width = width, col.names = varname) # import data
    
      # readrパッケージを使う場合
      # d <- read_fwf(datafilename.input, fwf_widths(width, col_names = varname)) # import data
    
      datafilename.output <- paste("data_", p, ".dta", sep = "")  # filename: data_*.dta
      write_dta(data, datafilename.output) # export as .dta file
    }
    
    

    좋은 웹페이지 즐겨찾기