R 조건에 맞는 행 삭제 - r jogeon-e majneun haeng sagje

자료를 분석하기에 앞서

먼저 자료를 분석에 적합한 상태로 가공해야 한다.

행을 선택할 때는 data[행,]을 코딩하면 된다.

일부 분석대상자만 선택 혹은 제외하고 싶을 때 사용할 수 있다.

[R]

R 조건에 맞는 행 삭제 - r jogeon-e majneun haeng sagje

열을 선택할 때는 data[,열]을 코딩하면 된다.

일부 변수만 선택하고 싶을 때 사용할 수 있다.

[R]

열을 선택하는 또 다른 방법은 data$변수를 코딩하는 것이다.

[R]

이를 응용해서 특정 행과 열을 동시에 선택할 때는 data[행,열]로 쓰면 된다.

[R]

자료에서 변수가 특정 값을 가진 경우만 선택하고 싶다면 어떻게 할까?

1. data[data$변수==특정값,]

[R]

2. subset( )함수 이용

[R]

마지막으로 변수 값이 결측치인 경우를 제거하고 싶다면 is.na( )함수를 이용할 수 있다.

[R]

특정조건을 만족하는 Row 삭제

먼저 예제 데이터를 만들어 data.csv에 저장하였습니다. 이 파일을 읽어 data에 저장합니다.

data=read.csv("test.csv")

data

   ID  a  b  c  d  e  f  g

1 101 NA NA NA NA NA NA NA

2 102  9 10 NA NA NA NA NA

3 103 NA  9 NA NA NA NA NA

4 104 NA NA  9  9 NA NA NA

5 105 NA NA  1  8  9 NA NA

6 106 NA NA NA NA NA NA NA

7 107 NA  2 NA NA NA NA NA

8 108 NA NA  4  7 NA NA  9

다음으로 x라는 벡터를 읽어 NA값을 제외한 후 x에 9만 포함되어 있으면 TRUE, 9 이외에 다른 값이 있으면 FALSE를 반환하는 함수를 만듭니다.

seek9only=function(x){

    x=x[!is.na(x)]

    if(length(unique(x))!=1)result<-FALSE

    elseif(unique(x)==9) result<-TRUE

    result

}

apply 함수를 이용해 data의 열을 기준으로 이 함수를 적용시킵니다.

select<-apply(data,2,seek9only)

select

   ID     a     b     c     d     e     f     g 

FALSE  TRUE FALSE FALSE FALSE  TRUE FALSE  TRUE 

원하는 데이터는 다음과 같이 고르시면 됩니다.

data1<-data[!select]

data1

   ID  b  c  d  f

1 101 NA NA NA NA

2 102 10 NA NA NA

3 103  9 NA NA NA

4 104 NA  9  9 NA

5 105 NA  1  8 NA

6 106 NA NA NA NA

7 107  2 NA NA NA

8 108 NA  4  7 NA