본문 바로가기
R

[R.아르] R 행,열 삭제

by LightBlogger 2016. 8. 30.

R에서 쓰이는 데이터프레임은 행과 열을 갖고 있다.

[2, 1] 은 2행 1열,

[1, 3] 은 1행 3열을 의미한다.


같은 원리로, 쉼표의 위치에 따라

[2,] 은 '2행'을 의미하고

[,3] 은 '3열'을 의미한다


행과 열이 많이 필요할 것 같으니, R에 기본 저장 되어 있는 'iris' 데이터를 보자



150행짜리라, 첫 몇 행만 보려고 head()에 넣었다.


여기서 1행만 뽑고 싶다면 이렇게



1에서 10행까지만 뽑고 싶다면 이렇게



1에서 3열까지만 뽑고 싶다면 이렇게


하면 된다.


3열까지 뽑을 경우 행은 150 행일 것이므로 head()로 조금만 보았다:)


이제 x에서 1행을 삭제해 보자. 삭제는 (-) 기호를 쓰면 된다.



마찬가지로 2, 4, 6 행을 삭제하려면



삭제시에는 행이름이 아니라 행의 순서로 판단하므로


rownames(x) <- NULL로 행이름을 초기화시키지 않으면, 


이전 상태에서 '2번째' 행이었던 '행이름 3' 행과 4번째였던 '행이름 5', 그리고 6번째였던 '행이름 7' 행이 삭제되어 헛갈릴 수 있다


마찬가지로 열을 삭제하려면



이와 같이 하면 된다.


다만 특이한 것이, 열 이름을 이용한 삭제는 이런 방법으로는 불가능하다.



위와 같이 열 이름을 사용한 추출은 가능하지만,



삭제를 위해 '-'를 붙이면 위와 같이 에러가 난다.


열 이름을 사용해 삭제하려면 다음에 다룰 subset() 함수를 사용해야 한다.


(2016/09/05 - [R] - [R.아르] 특정 조건을 만족하는 행만 추출하기 를 보자)



행이나 열이 아니라 벡터에서 어떤 원소를 삭제할 때도 동일한 방법을 사용한다.


예를들어 다음과 같은 x에서



세 번째 원소를 삭제하고 싶다면



위와 같이 하면 된다.


행이나 열이 아니므로 콤마(,)를 사용하지 않는다.


세 번째에서 일곱 번째 원소를 삭제하고 싶다면



위와 같이 한다.


실제로는 눈으로 보면서 몇 번째 원소를 삭제할 것인지 결정하기는 힘들기 때문에


which=() 같은 함수와 조합하여 사용하는 경우가 많다.


예를들어 다음과 같은 x에서 짝수를 지우려면



위와 같이 사용한다.


%%는 나누었을 때의 나머지라는 의미이며


which=() 에 대하여는 2016/09/05 - [R] - [R.아르] 특정 조건을 만족하는 행의 개수 구하기 를 참고하면 되겠다.


반응형

댓글