R for SAS ans SPSS Users
Chapter 9 Data Acquisition
9.1 The R Data Editor
간단한 data frame을 만들고 data editor를 이용하여 자료 입력
> mydata <- data.frame(id =0)
변수 이름 id, 자료는 0인 data frame 만들기
> fix(mydata)
R data editor를 불러냄
변수명을 변경하고,numeric or character 선택.자료 입력. 자료가 missing 그냥 빈칸
그리고 X를 클릭하여 창 닫고 저장
> mydata2 <- data.frame(id = 0., workshop = 0., gender = "",
q1 = 0., q2 = 0., q3 = 0., q4 = 0.)
변수명 변경과 숫자 및 문자 선택을 R data editor에서 하기 싫으면 위와 같이 data frame 생성
> mydata <- edit(mydata)
edit 함수를 이용하여 R data editor을 부를 수도 있음
> edit(mydata)
R data editor를 부를 수는 있으나 창을 닫았을 때 저장이 안됨
> mydata <- .Last.value
R data editor에서 변경된 것, 그러나 저장이 안 된 것을 저장함
9.2 Reading Delimited Text Files
delimited text file은 space, tab, comma 등으로 값이 분리 된 파일
delimited text file을 읽기 위하여 read.table 함수 이용
첫째 줄을 변수 이름으로 사용할 수도 있음
tab 또는 space로 값이 분리된 mydata.tab 준비
> getwd()
> setwd("c:/temp")
> getwd()
현재 working directory 확인. c:/temp를 working director로 지정. 현재 wd 확인
> mydata3 <- read.table("mydata.tab")
> mydata3
mydata.tab을 읽기. 확인.
comma로 값이 분리된 mydata.csv 준비
> mydata4 <- read.table("mydata.csv",
header = TRUE,
sep = ",",
row.names = "id",
na.strings = " ")
> mydata4
mydata.csv를 읽음. 첫째 줄을 변수명으로 사용. 값의 분리는 comma, 행의 이름은 id 컬럼, missing value는 space로 표시
> mydata5 <- read.csv("mydata.csv",
row.names = "id",
na.string = " ")
> mydata5
csv 파일을 읽을 때는 read.csv 함수를 이용할 수도 있으나, 덜 유연함
> mydata6 <- read.table("mydata.csv",
header = TRUE,
sep = ",",
row.names = "id",
na.strings = " ",
colClasses = c("integer", "integer", "character",
"NULL", "NULL", "integer", "integer"))
> mydata6
colClasses라는 인자를 이용하여 q1, q2 변수를 읽지 않음
colClasses에는 logical, integer, numeric, character, factor 등을 쓸 수 있으며, NULL은 읽을 때 생략한다는 의미
9.3 Reading Text Data Withing a Program
> mystring <-
"id,workshop,gender,q1,q2,q3,q4
1,1,f,1,1,5,1
2,2,f,2,1,4,1
3,1,f,2,2,4,3
4,2, ,3,1, ,3
5,1,m,4,5,2,4
6,2,m,5,4,5,5
7,1,m,5,3,4,4
8,2,m,4,5,5,5"
> mydata7 <- read.table(textConnection(mystring),
header = TRUE,
sep = ",",
row.names = "id",
na.strings = " ")
> mydata7
입력할 자료를 mystring에 저장. textConnection이란 함수가 mystring을 읽어 마치 파일처럼 만들어 read.table함수에 넘김.
> mydata8 <- read.csv(textConnection(mystring),
row.names = "id",
na.string = " ")
> mydata8
textConnection 함수와 read.csv 함수를 이용
9.4 Reading Data from the Keyboard
> id <- scan()
키보드로 자료 입력
> workshop <- scan()
키보드로 자료 입력
> gender <- scan(what = "character")
키보드로 자료 입력, 문자 입력시에는 what 인자 사용
> mydata9 <- data.frame(id, workshop, gender)
> mydata9
각 벡터를 data.frame 함수를 이용하여 합치기
9.5 Reading Fixed-Width Text Files, One Record per Case
> mydata10 <- read.fwf(file = "mydataFWF.txt",
width = c(2,-1,1,1,1,1,1),
col.names = c("id","gender", "q1", "q2", "q3", "q4"),
row.names = "id",
na.strings = "",
fill = TRUE,
strip.white = TRUE)
> mydata10
width = c(2,-1,1,1,1,1,1) 2컬럼 읽고, 그 다음 생략, 그 다음 1컬럼씩 5개 읽기.
fill은 라인 마지막에 공백이 필요하면 알아서 넣으라는 뜻(SAS의 missover 옵션)
strip.white는 예를 들어 "Bob "를 읽었을 때 Bob만 저장
9.5.1 Macro Substitution
> myfile <- "mydataFWF.txt"
> myVariableWidth <- c(2,-1,1,1,1,1,1)
> myVariableNames <- c("id","gender", "q1", "q2", "q3", "q4")
> mydata11 <- read.fwf(file = myfile,
width = myVariableWidth,
col.names = myVariableNames,
row.names = "id",
na.strings = "",
fill = TRUE,
strip.white = TRUE)
> mydata11
파일 이름, 컬럼 수와 이름을 변수에 저장하고 사용하기
9.6 Reading Fixed-Width Text Files, Two or More Records per Case
여러줄에 걸쳐 한case 자료가나올 때
> myfile <- "mydataFWF.txt"
파일 이름을 저장
> myVariable1Width <- c( 2, 1, 1,1,1,1,1)
> myVariable2Width <- c(-2,-1,-1,1,1,1,1)
> myVariableWidth <- list(myVariable1Width, myVariable2Width)
컬럼 수를 각각 저장하여 list로 결합
id, group, gender가 매 줄에 나오나 둘째 줄에서는 id, group, gender를 생략
> myVariableNames <- c("id", "group", "gender",
"q1", "q2", "q3", "q4",
"q5", "q6", "q7", "q8")
변수 이름 저장
> mydata12 <- read.fwf(file = myfile,
width = myVariableWidth,
col.names = myVariableNames,
row.names = "id",
na.strings = "",
fill = TRUE,
strip.white = TRUE)
> mydata12
파일을 읽고, 출력
9.7 Importing Data from SAS
9.8 Importing Data from SPSS
9.9 Exportng Data
> write.table(mydata7,
file = "mydata2.txt",
quote = FALSE,
sep = "\t",
na = " ",
row.names = TRUE,
col.names = TRUE)
mydata2.txt로 자료 출력, " 부호 안 쓰기, 값의 분리는 tab, missing value는 space, 행과 열의 이름 표시
foreign 패키지를 이용하여 자료 출력
>library("foreign")
foreign 패키지 로드
> write.foreign(mydata7,
datafile = "mydata3.txt",
codefile = "mydata.sas",
package = "SAS")
> file.show("mydata3.txt")
> file.show("mydata.sas")
mydata3.txt로 출력, SAS에서 mydata3.txt를 읽는프로그램을 mydata.sas로 출력
mydata3.txt와 mydata.sas 확인
프로그램 소스
# Chapter 9 Data Acquisition
# 9.1 The R Data Editor
mydata <- data.frame(id =0)
fix(mydata)
mydata2 <- data.frame(id = 0., workshop = 0., gender = "",
q1 = 0., q2 = 0., q3 = 0., q4 = 0.)
mydata2 <- edit(mydata2)
edit(mydata2)
mydata2 <- .Last.value
# 9.2 Reading Delimited Text Files
getwd()
setwd("c:/temp")
getwd()
mydata3 <- read.table("mydata.tab")
mydata3
mydata4 <- read.table("mydata.csv",
header = TRUE,
sep = ",",
row.names = "id",
na.strings = " ")
mydata4
mydata5 <- read.csv("mydata.csv",
row.names = "id",
na.string = " ")
mydata5
mydata6 <- read.table("mydata.csv",
header = TRUE,
sep = ",",
row.names = "id",
na.strings = " ",
colClasses = c("integer", "integer", "character",
"NULL", "NULL", "integer", "integer"))
mydata6
# 9.3 Reading Text Data Withing a Program
mystring <-
"id,workshop,gender,q1,q2,q3,q4
1,1,f,1,1,5,1
2,2,f,2,1,4,1
3,1,f,2,2,4,3
4,2, ,3,1, ,3
5,1,m,4,5,2,4
6,2,m,5,4,5,5
7,1,m,5,3,4,4
8,2,m,4,5,5,5"
mydata7 <- read.table(textConnection(mystring),
header = TRUE,
sep = ",",
row.names = "id",
na.strings = " ")
mydata7
mydata8 <- read.csv(textConnection(mystring),
row.names = "id",
na.string = " ")
mydata8
# 9.4 Reading Data from the Keyboard
id <- scan()
workshop <- scan()
gender <- scan(what = "character")
mydata9 <- data.frame(id, workshop, gender)
mydata9
# 9.5 Reading Fixed-Width Text Files, One Record per Case
mydata10 <- read.fwf(file = "mydataFWF.txt",
width = c(2,-1,1,1,1,1,1),
col.names = c("id","gender", "q1", "q2", "q3", "q4"),
row.names = "id",
na.strings = "",
fill = TRUE,
strip.white = TRUE)
mydata10
# 9.5.1 Macro Substitution
myfile <- "mydataFWF.txt"
myVariableWidth <- c(2,-1,1,1,1,1,1)
myVariableNames <- c("id","gender", "q1", "q2", "q3", "q4")
mydata11 <- read.fwf(file = myfile,
width = myVariableWidth,
col.names = myVariableNames,
row.names = "id",
na.strings = "",
fill = TRUE,
strip.white = TRUE)
mydata11
# 9.6 Reading Fixed-Width Text Files, Two or More Records per Case
myfile <- "mydataFWF.txt"
myVariable1Width <- c( 2, 1, 1,1,1,1,1)
myVariable2Width <- c(-2,-1,-1,1,1,1,1)
myVariableWidth <- list(myVariable1Width, myVariable2Width)
myVariableNames <- c("id", "group", "gender",
"q1", "q2", "q3", "q4",
"q5", "q6", "q7", "q8")
mydata12 <- read.fwf(file = myfile,
width = myVariableWidth,
col.names = myVariableNames,
row.names = "id",
na.strings = "",
fill = TRUE,
strip.white = TRUE)
mydata12
# 9.7 Importing Data from SAS
# 9.8 Importing Data from SPSS
# 9.9 Exportng Data
write.table(mydata7,
file = "mydata2.txt",
quote = FALSE,
sep = "\t",
na = " ",
row.names = TRUE,
col.names = TRUE)
library("foreign")
write.foreign(mydata7,
datafile = "mydata3.txt",
codefile = "mydata.sas",
package = "SAS")
file.show("mydata3.txt")
file.show("mydata.sas")
실행 결과
> # Chapter 9 Data Acquisition
>
> # 9.1 The R Data Editor
>
> mydata <- data.frame(id =0)
>
> fix(mydata)
>
> mydata2 <- data.frame(id = 0., workshop = 0., gender = "",
+ q1 = 0., q2 = 0., q3 = 0., q4 = 0.)
>
> mydata2 <- edit(mydata2)
>
> edit(mydata2)
>
> mydata2 <- .Last.value
>
> # 9.2 Reading Delimited Text Files
>
> getwd()
[1] "c:/temp"
>
> setwd("c:/temp")
>
> getwd()
[1] "c:/temp"
>
> mydata3 <- read.table("mydata.tab")
>
> mydata3
workshop gender q1 q2 q3 q4
1 1 f 1 1 5 1
2 2 f 2 1 4 1
3 1 f 2 2 4 3
4 2 <NA> 3 1 NA 3
5 1 m 4 5 2 4
6 2 m 5 4 5 5
7 1 m 5 3 4 4
8 2 m 4 5 5 5
>
> mydata4 <- read.table("mydata.csv",
+ header = TRUE,
+ sep = ",",
+ row.names = "id",
+ na.strings = " ")
> mydata4
workshop gender q1 q2 q3 q4
1 1 f 1 1 5 1
2 2 f 2 1 4 1
3 1 f 2 2 4 3
4 2 <NA> 3 1 NA 3
5 1 m 4 5 2 4
6 2 m 5 4 5 5
7 1 m 5 3 4 4
8 2 m 4 5 5 5
>
> mydata5 <- read.csv("mydata.csv",
+ row.names = "id",
+ na.string = " ")
> mydata5
workshop gender q1 q2 q3 q4
1 1 f 1 1 5 1
2 2 f 2 1 4 1
3 1 f 2 2 4 3
4 2 <NA> 3 1 NA 3
5 1 m 4 5 2 4
6 2 m 5 4 5 5
7 1 m 5 3 4 4
8 2 m 4 5 5 5
>
> mydata6 <- read.table("mydata.csv",
+ header = TRUE,
+ sep = ",",
+ row.names = "id",
+ na.strings = " ",
+ colClasses = c("integer", "integer", "character",
+ "NULL", "NULL", "integer", "integer"))
> mydata6
workshop gender q3 q4
1 1 f 5 1
2 2 f 4 1
3 1 f 4 3
4 2 <NA> NA 3
5 1 m 2 4
6 2 m 5 5
7 1 m 4 4
8 2 m 5 5
>
> # 9.3 Reading Text Data Withing a Program
>
> mystring <-
+ "id,workshop,gender,q1,q2,q3,q4
+ 1,1,f,1,1,5,1
+ 2,2,f,2,1,4,1
+ 3,1,f,2,2,4,3
+ 4,2, ,3,1, ,3
+ 5,1,m,4,5,2,4
+ 6,2,m,5,4,5,5
+ 7,1,m,5,3,4,4
+ 8,2,m,4,5,5,5"
> mydata7 <- read.table(textConnection(mystring),
+ header = TRUE,
+ sep = ",",
+ row.names = "id",
+ na.strings = " ")
> mydata7
workshop gender q1 q2 q3 q4
1 1 f 1 1 5 1
2 2 f 2 1 4 1
3 1 f 2 2 4 3
4 2 <NA> 3 1 NA 3
5 1 m 4 5 2 4
6 2 m 5 4 5 5
7 1 m 5 3 4 4
8 2 m 4 5 5 5
>
> mydata8 <- read.csv(textConnection(mystring),
+ row.names = "id",
+ na.string = " ")
> mydata8
workshop gender q1 q2 q3 q4
1 1 f 1 1 5 1
2 2 f 2 1 4 1
3 1 f 2 2 4 3
4 2 <NA> 3 1 NA 3
5 1 m 4 5 2 4
6 2 m 5 4 5 5
7 1 m 5 3 4 4
8 2 m 4 5 5 5
>
> # 9.4 Reading Data from the Keyboard
>
> id <- scan()
> workshop <- scan()
> gender <- scan(what = "character")
> mydata9 <- data.frame(id, workshop, gender)
> # 9.5 Reading Fixed-Width Text Files, One Record per Case
>
> mydata10 <- read.fwf(file = "mydataFWF.txt",
+ width = c(2,-1,1,1,1,1,1),
+ col.names = c("id","gender", "q1", "q2", "q3", "q4"),
+ row.names = "id",
+ na.strings = "",
+ fill = TRUE,
+ strip.white = TRUE)
>
> mydata10
gender q1 q2 q3 q4
1 f 1 1 5 1
2 f 2 1 4 1
3 f 2 2 4 3
4 <NA> 3 1 NA 3
5 m 4 5 2 4
6 m 5 4 5 5
7 m 5 3 4 4
8 m 4 5 5 5
>
> # 9.5.1 Macro Substitution
>
> myfile <- "mydataFWF.txt"
> myVariableWidth <- c(2,-1,1,1,1,1,1)
> myVariableNames <- c("id","gender", "q1", "q2", "q3", "q4")
>
> mydata11 <- read.fwf(file = myfile,
+ width = myVariableWidth,
+ col.names = myVariableNames,
+ row.names = "id",
+ na.strings = "",
+ fill = TRUE,
+ strip.white = TRUE)
>
> mydata11
gender q1 q2 q3 q4
1 f 1 1 5 1
2 f 2 1 4 1
3 f 2 2 4 3
4 <NA> 3 1 NA 3
5 m 4 5 2 4
6 m 5 4 5 5
7 m 5 3 4 4
8 m 4 5 5 5
>
> # 9.6 Reading Fixed-Width Text Files, Two or More Records per Case
>
> myfile <- "mydataFWF.txt"
> myVariable1Width <- c( 2, 1, 1,1,1,1,1)
> myVariable2Width <- c(-2,-1,-1,1,1,1,1)
> myVariableWidth <- list(myVariable1Width, myVariable2Width)
> myVariableNames <- c("id", "group", "gender",
+ "q1", "q2", "q3", "q4",
+ "q5", "q6", "q7", "q8")
>
> mydata12 <- read.fwf(file = myfile,
+ width = myVariableWidth,
+ col.names = myVariableNames,
+ row.names = "id",
+ na.strings = "",
+ fill = TRUE,
+ strip.white = TRUE)
>
> mydata12
group gender q1 q2 q3 q4 q5 q6 q7 q8
1 1 f 1 1 5 1 2 1 4 1
3 1 f 2 2 4 3 3 1 NA 3
5 1 m 4 5 2 4 5 4 5 5
7 1 m 5 3 4 4 4 5 5 5
>
> # 9.7 Importing Data from SAS
>
> # 9.8 Importing Data from SPSS
>
> # 9.9 Exportng Data
>
> write.table(mydata7,
+ file = "mydata2.txt",
+ quote = FALSE,
+ sep = "\t",
+ na = " ",
+ row.names = TRUE,
+ col.names = TRUE)
>
> library("foreign")
> write.foreign(mydata7,
+ datafile = "mydata3.txt",
+ codefile = "mydata.sas",
+ package = "SAS")
Warning messages:
1: closing unused connection 4 (mystring)
2: closing unused connection 3 (mystring)
> file.show("mydata3.txt")
> file.show("mydata.sas")
>
>
파일
1291862065_R_for_SAS_and_SPSS_Users_09.R
1291862065_mydata.zip
'Programming > R' 카테고리의 다른 글
R for SAS and SPSS Users 10. Selecting Variables - Var, Variables = (0) | 2010.12.14 |
---|---|
R for SAS ans SPSS Users 8. Programming Language Basics (0) | 2010.12.03 |
R for SAS and SPSS Users 7. Help and Documentation (0) | 2010.12.03 |
R for SAS and SPSS Users 6. Running R (0) | 2010.12.02 |
R for SAS and SPSS Users 5. Installing and Updating R (0) | 2010.12.02 |