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로 배우는 데이터 과학