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를 불러와서 확인하면 작업 폴더에 저장됨을 확인 할 수 있습니다.

Written on March 3, 2018