R 데이터 처리 실습해보기 - 2
어제 데이터를 가져와서 확인한 내용에 이어서, 오늘은 데이터에 추가하고, 제거하며, 치환하는 방식에 대하여 실습해보려 합니다.
데이터 추출
# 벡터 연산을 이용한 데이터 추출
# 행
aws[1,]
# 열
aws[,1]
# 연속
aws[5:10,]
행과 열을 지정하여 데이터를 추출할 수 있습니다.
비어있는 공간은 전부 선택된 것으로 간주하므로 지정하고 싶은 곳만 작성하면됩니다.
연속적인 조회도 가능합니다.
# 이산
aws[c(2,100, 5:10),]
벡터로 2와 100번째 그리고 5부터 10번째까지의 행을 보여줍니다.
# 단일 문자
aws[, "AWS_ID"]
문자열로 검색하여 해당 열을 모두 보여줍니다.
# 복수 문자
aws[,c("AWS_ID","Wind")]
행은 모두 선택되었고, 열에서 두가지의 문자열에 해당되는 복수의 열들을 나열해 보여줍니다.
# 특정 위치
aws[1,1]
aws["1","AWS_ID"]
숫자로 특정 위치를 바로 지정할 수 있고, 문자열로도 검색하여 지정할 수도 있습니다.
데이터 치환
# 벡터연산을 이용한 데이터 치환
aws_copy = aws
aws_copy[1,] = -1
head(aws_copy)
aws_copy[2:3,] = -2
head(aws_copy)
aws_copy[c(4,6),] = -3
head(aws_copy)
우선 안전한 실습을 위해 메모리에 저장한 벡터를 복사하여 복사본을 사용합니다.
그리고 1번째 행의 모든 열을 -1로 바꾸어 보고 최상단 일부를 출력합니다.
범위를 지정해서도 할 수 있으며, 벡터로 묶어서 바꿀 수도 있습니다.
aws_copy[,6] = "new"
head(aws_copy)
만약 없는 순서면 새로 만들어집니다.
위 코드는 6번째 열의 모든 행에 new라는 문자열이 들어가게 됩니다.
aws_copy[,ncol(aws_copy)+1] = "new_second"
head(aws_copy)
열의 갯수를 세주는 명령을 이용하여 이렇게 작성할 수도 있습니다.
aws_copy[,"new_col"] = "new_third"
head(aws_copy)
문자열로도 없는 열이면 넣을 수 있습니다.
# 열 이름 치환
colnames(aws_copy)[6] = "6th col"
head(aws_copy)
colnames(aws_copy)[7:8] = c("hello","world")
head(aws_copy)
열의 이름을 찾는 명령으로 순서를 찾아서 치환할 수 있습니다.
범위 지정도 가능히고 벡터로 묶어서 하는 것도 가능합니다.
데이터시트 바로보기
# 에디터에서 수정한 데이터시트 보기
View(aws_copy)
작성한 데이터를 바로 에디터상에서 보고 싶을 때는 위 코드를 콘솔에 작성하면 별도의 창이 띄어집니다.
벡터 병합
# 병합
aws_bind = cbind(aws,aws_copy)
head(aws_bind)``
벡터들끼리 병합할 수도 있습니다.
나란히 병합할 때는 행의 갯수가 같아야하며, 상하로 병합하려면 열의 갯수가 일치해야 합니다.
벡터 요약
# 요약
table(aws$AWS_ID)
table(aws$AWS_ID,aws$X)
위 코드를 통해 간단히 요약할 수 있습니다,
위 코드는 특정 열을 지목하며 비율을 비교합니다.
저장
마지막으로 이렇게 데이터를 작성하고 나면 다시 저장하고 싶으실 것입니다.
write.csv(aws,"AWS_sample.csv",row.names = F)
aws_csv = read.csv("AWS_sample.csv", stringsAsFactors = F)
aws_csv
str(aws)
write.csv 명령을 이용하여 csv로 그대로 저장합니다.
다만, 저장할 때 편집기의 행이 그대로 따라오므로 반드시 row.names 옵션을 false로 변경해줍니다.
그리고 확인차 다시 csv를 불러와서 확인하면 작업 폴더에 저장됨을 확인 할 수 있습니다.