Programing/R- programming

파일 입출력, R 프로그래밍

sosal 2014. 8. 21. 12:13
반응형

/*

 http://sosal.kr/
 * made by so_Sal
 */



FILE I/O


일반적으로 R programming의 작업 환경은 내문서에서 시작된다.


getwd() # 현재 디렉토리 위치를 반환하는 함수


getwd returns an absolute filepath representing the current working directory of the R process; setwd(dir) is used to set the working directory to dir.




> getwd()

[1] "C:/Users/sosal/Documents"



setwd() # 현재 디렉토리 위치를 바꾸는 함수


윈도우즈의 경우 파일-> 직업 디렉토리 변경
기능을 통해 GUI로 설정할 수 있다.



> help(getwd)

> setwd("C:/Users/sosal/Desktop")

> getwd()

[1] "C:/Users/sosal/Desktop"




아래 2개의 데이터를 이용하여 실습해 보겠습니다.

humidity.txt

temperature.txt





temperature <- read.table("temperature.txt", header=TRUE, sep=" ")


"temperature.txt": 파일이름

header=TRUE: 헤더가 있는경우 헤더를 사용하며, 만약 header 파라미터를 넣지 않으면 모두 데이터로 인식한다.

sep=" ": 구분자가 띄어쓰기로 인식되는 경우.


> temperature

     area temperature

1   seoul         7.2

2 incheon         8.0

3   suwon         5.4

4 daejeon         6.8

5 kwangju         8.2

6   daegu         8.5

7   busan         7.5

8   jaeju         9.5




humidity는 구분자가 ' , ' 로 되어있기 때문에, sep = ","가 된다.

> humidity <- read.table( "humidity.txt", header=TRUE, sep=",", na.strings=c(".","NA") )    


na.strings=c(".", "nA") 매개변수는

파일로부터 읽어온 string 값이 '.' 또는 'NA'인 경우 실제 Not Available (NA)로 인식하도록 한다.


> humidity

      area humidity

1    seoul     62.0

2  incheon     83.0

3    suwon     80.0

4  donghae     41.0

5  daejeon     71.0

6    ulsan     49.0

7    daegu      8.5

8   hadong       NA

9    busan      7.5

10   jaeju      9.5

11   masan       NA





merge 를 이용하여 두 테이블을 합칠 수 있다. (join)

> merge( temperature, humidity, by=c('area'), all=TRUE)

      area temperature humidity

1    busan         7.5      7.5

2    daegu         8.5      8.5

3  daejeon         6.8     71.0

4  incheon         8.0     83.0

5    jaeju         9.5      9.5

6  kwangju         8.2       NA

7    seoul         7.2     62.0

8    suwon         5.4     80.0

9  donghae          NA     41.0

10  hadong          NA       NA

11   masan          NA       NA

12   ulsan          NA     49.0


all=TRUE: Kwangju는 실제 humidity가 없지만, NA 값을 넣어 사용한다. (합집합)


> merge( temperature, humidity, by=c('area'), all=FALSE) # (교집합)

     area temperature humidity

1   busan         7.5      7.5

2   daegu         8.5      8.5

3 daejeon         6.8     71.0

4 incheon         8.0     83.0

5   jaeju         9.5      9.5

6   seoul         7.2     62.0

7   suwon         5.4     80.0