본문 바로가기

데이터 다루기/Base of R

R에서의 데이터 프레임 다루기 (2)

728x90
반응형
eng <- data.frame(name = c("Lee", "Choi", "Park", "Kim"), eng = c(93,73,83,73)) 
math <- data.frame(name = c("Park", "You", "Lee", "Kim"), math = c(89,79,69,99)) 
eng1 <- data.frame(name =c('You'), eng = 88)

안녕하세요, 이번에는 R에서의 데이터 프레임 다루기 두번째 시간입니다.

이번에는 데이터프레임 합치기, 정렬, 분해, 부분집합을 선택하는 법을 배워보겠습니다.

1. 데이터프레임 합치기

 

우선 3개의 데이터 프레임을 만들도록 하겠습니다. 우선 rbind를 통해서 데이터프레임을 행을 기준으로 합칠 수 있습니다.

하지만 이 때 컬럼이름이 같아야 하며 데이터 타입도 통일이 되어야합니다.

score <- rbind(eng, eng1)

위의 데이터프레임을 보시면 eng 데이터 프레임에서 eng1 데이터프레임이 행을 기준으로 합쳐진 것을 확인할 수 있습니다.

같은 방식으로 열을 기준으로 합치려면 cbind를 이용하면 됩니다. 이 때도 마찬가지로 행의 개수가 같아야 합쳐집니다.

score <- cbind(eng, math)

위의 데이터프레임처럼 열을 기준으로 eng와 math가 합쳐진 것을 확인할 수 있습니다.

다른 방법으로 merge 함수를 사용하여 name을 기준으로 합치는 방법이 있습니다.

score <- merge(eng,math)

위의 데이터프레임을 보시면 eng와 math에서 공통으로 존재하는 name에 한해서 합쳐진 것을 보실 수 있습니다.

이 때 all=T, all.x = T 나 all.y = T 를 merge 함수에 입력함으로써 공통이 아닌 부분에 대해서도 출력할 수 있습니다.

2. 데이터 프레임 정렬

우선 정렬 함수에 대해서 알아보도록 하겠습니다.

x <- c(34,45,22,5,69,84,17)

sort 함수는 벡터를 오름차순으로 자동으로 정렬을 해줍니다. 이 때 decreasing = T를 추가하면, 내림차순으로 정렬할 수 있습니다.

order 함수는 sort와 같이 자동으로 정렬을 해주는데 index를 출력값으로 합니다. 즉, 가장 작은 5가 4번째에 위치하므로 4가 제일 앞에 오는 것을 확인할 수 있습니다.

이처럼 order 함수는 index를 출력해주기 때문에 데이터프레임을 정렬할 때에는 order 함수를 사용합니다.

위의 결과는 eng에 대해서 먼저 정렬을 하고 같은 eng 값이 있으면 그것에 대해서는 math 값으로 정렬을 하게 됩니다.

또한 - 를 붙여줌으로써 내림차순으로 정렬을 할 수 있습니다.

3. 데이터 프레임 분해

데어터 프레임의 분해는 split 함수를 이용하여 할 수 있습니다.

위의 결과는 eng 값을 name을 기준으로 분해한 것 입니다. 이 때 결과값은 리스트로 출력이 됩니다.

4. 데이터 프레임 부분집합

데이터프레임의 부분집합을 얻을 때는 subset 함수를 사용하며, 이 방법은 데이터 분석에서 흔히 쓰입니다.

결과를 보시면 name이 Kim 해당하는 행만 출력이 된것을 확인 할 수 있습니다.

subset에 대해 추가적으로 실습을 해보겠습니다.

위의 결과는 iris 데이터 프레임에서 Species가 setosa 이면서 Sepal.Length 가 4.5 미만인 행들만 출력 된것을 확인할 수 있습니다.

반응형

'데이터 다루기 > Base of R' 카테고리의 다른 글

[R] with, within, which 함수  (0) 2019.05.30
[R] apply 함수  (0) 2019.05.30
R에서의 데이터 프레임 다루기 (1)  (0) 2019.05.29
변수 선언하기 & 데이터 타입 & 자료 구조  (0) 2019.05.29
R의 기능 & 연산  (0) 2019.05.29