R – 파일 입출력 및 조건, 반복문 스크립트로 알아보기

Script )

# 01 파일 읽고 쓰기
# 텍스트 파일을 읽어올 때는 read.table함수를 이용한다. 
# 파일의 첫 행이 각 열의 변수로 쓰게 하려면 header=T를 해야 된다. (아니면 첫 행도 데이터로 쓴다.)
students = read.table("C:/Users/aaa/Desktop/Repository/Rsource/Sources/students1.txt", header = T) 
students

str(students)
students$name # 팩터형 

# 파일을 읽을 때 문자열을 범주형으로 인식하지 않도록 설정 (초깃값:T) / as.is=T로 해도 같은 결과 <파일을 있는 형태 그대로 읽음>
students2 = read.table("C:/Users/aaa/Desktop/Repository/Rsource/Sources/students12.txt", header = T, stringsAsFactors=F) 
students2

str(students2)
students2$name # 캐릭터형

# 파일을 읽을 때 구분 기호를 사용할 때는 (sep=",")와 같이 인수를 준다. 
students3 = read.table("C:/Users/aaa/Desktop/Repository/Rsource/Sources/students13.txt", header = T,sep=",") 
str(students3) # NA가 문자열로 인식해서 COMPUTER열 전체가 (문자열 처리하기 쉽게)팩터형으로 인식됨

# NA(결측값)의 문자열이 " NA"인 것을 프로그램으로 알려줘서 숫자로 만듬 <띄어쓰기 주의!!>
students4 = read.table("C:/Users/aaa/Desktop/Repository/Rsource/Sources/students13.txt", header = T,sep=",",na.strings=" NA") 
str(students4) # NA가 숫자로 인식되서 COMPUTER열이 정상적임 

# csv파일을 읽어올 때는 read.table함수를 이용한다. 
students=read.csv("C:/Users/aaa/Desktop/Repository/Rsource/Sources/students.csv")
str(students)

# 파일 쓰기
students = read.table("C:/Users/aaa/Desktop/Repository/Rsource/Sources/students1.txt", header = T,as.is=T)
# students파일에 있는 데이터를 <큰 따옴표를 붙여서> 모두 복사하고 output.txt에 붙여 넣어서 저장 
write.table(students, file="C:/Users/aaa/Desktop/Repository/Rsource/Sources/output.txt")
# students파일에 있는 데이터를 <큰 따옴표를 붙이지 않고> 모두 복사하고 output.txt에 붙여 넣어서 저장 
write.table(students, file="C:/Users/aaa/Desktop/Repository/Rsource/Sources/output2.txt",quote=F)

# 02 데이터 정제를 위한 조건문과 반복문 
test=c(15, 20, 30, NA, 45)

# 40미만의 데이터 추출
test[test<40]
# 3으로 나눈 나머지가 0이 아닌 데이터 추출
test[test%%3!=0]
# NA데이터만 추출 
test[is.na(test)]
# 짝수이면서 NA가 아닌 데이터 출력
test[test%%2==0 & !is.na(test)]

characters=data.frame(name=c("길동","춘향","철수"),age=c(30,16,21),gender=factor(c("M",'F','M')),math=c(70,80,90))
characters

# 성별이 여성인 행 추출 <데이터 프레임 행을 추출할 때는 ','가 뒤에 꼭 붙어야 한다!!> 
characters[characters$gender=="F",]
# 나이가 30미만이고 성별이 남성인 행 추출  
characters[characters$age<30 & characters$gender=="M",]

# 조건문
x=5
if(x%%2 ==0){ print("x is even number") 
} else { print("x is odd number") 
    }

# 데이터에 100초과 갑과 음수값이 포함되어 있음 
students=read.csv("C:/Users/aaa/Desktop/Repository/Rsource/Sources/students.csv")
students
# 2,3,4열 중 0~100 이외의 값은 NA로 처리함 
# ifelse문의 첫번째 인수에는 정상으로 처리할 조건, 두 번째 인수에는 비정상인 것들을 처리하는 방향으로 정함 
students[,2]=ifelse(students[,2]>=0 & students[,2]<=100, students[,2],NA)
students[,3]=ifelse(students[,3]>=0 & students[,3]<=100, students[,3],NA)
students[,4]=ifelse(students[,4]>=0 & students[,4]<=100, students[,4],NA)
students

# 반복문 
# 1부터 10까지 출력하는 소스 
i=1
repeat{
  if(i>10){break}
  else{print(i)
    i=i+1}
}

# 구구단 2단 만들기
i=1
while(i<10){
  print(paste(2,"x",i,"=",2*i))
  i=i+1
}

# for문 사용하기 
for(i in 1:10){
  print(paste(2,"^",i,"=",2^i))
}

# 구구단 전부 만들기 
for(i in 1:9){
  for(j in 1:9){
    print(paste(i,"x",j,"=",i*j))
  }
}

P. s. 디렉토리는 알아서 변경해서 사용
북 참고) R로 배우는 데이터 과학

Leave a Reply

Your email address will not be published. Required fields are marked *