[R 기초] 파일 가져오기, 데이터 뽑기, 조건문, 반복문 #read.table #read.scv #ifelse #repeat #while #for
유닉스 계열 ASCII \n(New Line)
윈도우 계열 ASCII \r(Carriage Return) \n(New Line)
텍스트 파일을 데이터프레임 형태로 읽기 read.table()
read.table(file, header=F,sep=" ", quote="\"'", ...)
header : 첫 줄을 데이터로 읽을 것인지 여부
sep : 열 구분자로 기본값은 공백
quote : 값을 둘러싸는 인용 부호 기본값은 큰 따옴표 "
예시)
> getwd()
[1] "c:/data/Lecture"
> setwd("c:\\data\\Lecture")
#작업폴더내에 첨부 파일(person.txt)을 저장
> persons <- read.table("person.txt",header = T, sep = " ")
> persons
키 체중 나이
1 167 54 21
2 176 74 32
3 180 67 27
> str(persons)
#데이터 프레임 형태로 가져옴
'data.frame': 3 obs. of 3 variables:
$ 키 : int 167 176 180
$ 체중: int 54 74 67
$ 나이: int 21 32 27
csv파일을 데이터프레임 형태로 읽기 read.csv()
예시)
> persons <- read.csv("person.csv",header = T, sep = " ")
#txt 파일 내용을 엑셀로 옮기고 scv 파일로 다른이름 저장하여 사용
> persons
키 체중 나이
1 167 54 21
2 176 74 32
3 180 67 27
흐름 제어문
예시)
> ex <- c(1,3,6,NA,23)
> ex
[1] 1 3 6 NA 23
> ex<10
[1] TRUE TRUE TRUE NA FALSE
> ex[ex<10]
[1] 1 3 6 NA
> which(ex<10)
[1] 1 2 3
> is.na(ex)
[1] FALSE FALSE FALSE TRUE FALSE
> ex[ex%%2==0]
[1] 6 NA
> which(is.na(ex))
[1] 4
> ex[ex%%2==0|!is.na(ex)]
[1] 1 3 6 NA 23
> ex[ex%%2==0&is.na(ex)]
[1] NA
> df<-data.frame(name=c("A","B","C"),age=c(21,22,34),gender=c("F","M","F"))
> df
name age gender
1 A 21 F
2 B 22 M
3 C 34 F
> df[df$gender=="M" & df$age<30,]
name age gender
2 B 22 M
> df[df$gender=="F" & df$age<30,c(1,2)]
name age
1 A 21
조건문 ifelse
> x<-6:(-4)
> x
[1] 6 5 4 3 2 1 0 -1 -2 -3 -4
> options(digits = 3)
> sqrt(x)
[1] 2.45 2.24 2.00 1.73 1.41 1.00 0.00 NaN NaN NaN NaN
Warning message:
In sqrt(x) : NaNs produced
> ifelse(x>0,x,NA)
[1] 6 5 4 3 2 1 NA NA NA NA NA
> sqrt(ifelse(x>0,x,NA))
[1] 2.45 2.24 2.00 1.73 1.41 1.00 NA NA NA NA NA
조건문 if else
> if(is.vector(x)){
+ length(x)
+ }else if(is.integer(x)){
+ sum(x)
+ }else{
+ paste(x,1)
+ }
[1] "1 1" "2 1" "3 1"
반복문 repeat
> i<-20
> repeat{
+ if(i>25){
+ break
+ }else{
+ print(i)
+ i<-i+1
+ }
+ }
[1] 20
[1] 21
[1] 22
[1] 23
[1] 24
[1] 25
반복문 while
> dan<-2
> i<-2
> while(i<5){
+ times<-i*dan
+ print(paste(dan,"X",i,"=",times))
+ i<-i+1
+ }
[1] "2 X 2 = 4"
[1] "2 X 3 = 6"
[1] "2 X 4 = 8"
반복문 for
> dan<-9
> for(i in 2:4){
+ times<-dan*i
+ print(paste(dan,"X",i,"=",times))
+ }
[1] "9 X 2 = 18"
[1] "9 X 3 = 27"
[1] "9 X 4 = 36"
for문은 매번 계산시마다 벡터를 생성하게 되어 있기 때문에 느리다.
따라서 아래와 같이 미리 빈 벡터를 만들어놓고 채워가는게 더 효율이 높음
> dan<-9
> times<-vector(length=9)
> for(i in 1:9){
+ times[i]<-dan*i
+ }
> times
[1] 9 18 27 36 45 54 63 72 81
'Data > R' 카테고리의 다른 글
[R 기초] 패키지와 그래프 (0) | 2016.03.06 |
---|---|
[R 기초] 사용자정의함수, 재귀함수, z-test (0) | 2016.03.06 |
[R 기초] 배열, 행렬, 요인, 데이터프레임, 리스트, 함수적용 (0) | 2016.03.06 |
[R]4.소셜 네트워크 감정 분석 sentiment analysis (6) | 2016.02.19 |
[R]3. 결정 트리 Classification (9) | 2016.02.10 |