int1, int2, int3 컬럼이 있으면 여기서 int1컬럼에 A라는 데이터만 제거하고 싶다면 어떻게 해야하는지요?

예제데이터를 아래와 같이 만들어볼게요.
참고로 예제는 데이터프레임 형식으로 만들었어요.

data <- data.frame(int1=LETTERS, int2=1:26, int3=rnorm(26))
data
##    int1 int2        int3
## 1     A    1  0.03542781
## 2     B    2  0.07652803
## 3     C    3 -0.37203678
## 4     D    4 -0.47640553
## 5     E    5 -0.56042448
## 6     F    6  0.44690176
## 7     G    7 -0.38123402
## 8     H    8 -0.68383971
## 9     I    9 -0.41867114
## 10    J   10  0.52504933
## 11    K   11  0.21770481
## 12    L   12 -0.68227919
## 13    M   13  0.16576876
## 14    N   14 -0.47159084
## 15    O   15  0.25877834
## 16    P   16  1.14337630
## 17    Q   17  0.65212121
## 18    R   18  1.22687331
## 19    S   19  0.34854933
## 20    T   20  0.91780384
## 21    U   21  2.65309157
## 22    V   22  1.47426800
## 23    W   23 -0.85032534
## 24    X   24 -0.21159773
## 25    Y   25  2.20264869
## 26    Z   26 -1.30484965

A. 완전정석방법

음.. 아마도 원하지 않을 정석방법을 굳이 보여드리자면

data[data$int1!="A", ]
##    int1 int2        int3
## 2     B    2  0.07652803
## 3     C    3 -0.37203678
## 4     D    4 -0.47640553
## 5     E    5 -0.56042448
## 6     F    6  0.44690176
## 7     G    7 -0.38123402
## 8     H    8 -0.68383971
## 9     I    9 -0.41867114
## 10    J   10  0.52504933
## 11    K   11  0.21770481
## 12    L   12 -0.68227919
## 13    M   13  0.16576876
## 14    N   14 -0.47159084
## 15    O   15  0.25877834
## 16    P   16  1.14337630
## 17    Q   17  0.65212121
## 18    R   18  1.22687331
## 19    S   19  0.34854933
## 20    T   20  0.91780384
## 21    U   21  2.65309157
## 22    V   22  1.47426800
## 23    W   23 -0.85032534
## 24    X   24 -0.21159773
## 25    Y   25  2.20264869
## 26    Z   26 -1.30484965

B. dplyr package 이용하기

저는 정석방법도 좋아하지만, 생산성을 고려할 때 너무 불편하다고 판단되면 A방법대신 B방법을 택합니다.

library(dplyr)
data %>% filter(int1!="A")
##    int1 int2        int3
## 1     B    2  0.07652803
## 2     C    3 -0.37203678
## 3     D    4 -0.47640553
## 4     E    5 -0.56042448
## 5     F    6  0.44690176
## 6     G    7 -0.38123402
## 7     H    8 -0.68383971
## 8     I    9 -0.41867114
## 9     J   10  0.52504933
## 10    K   11  0.21770481
## 11    L   12 -0.68227919
## 12    M   13  0.16576876
## 13    N   14 -0.47159084
## 14    O   15  0.25877834
## 15    P   16  1.14337630
## 16    Q   17  0.65212121
## 17    R   18  1.22687331
## 18    S   19  0.34854933
## 19    T   20  0.91780384
## 20    U   21  2.65309157
## 21    V   22  1.47426800
## 22    W   23 -0.85032534
## 23    X   24 -0.21159773
## 24    Y   25  2.20264869
## 25    Z   26 -1.30484965

생산성 고려

생산성을 고려하면 A이든 B이든 코드한줄이며 코드의 양도 별차이 없어 생산성의 차이가 크지 않은 것 같아요.
조건 하나를 더 걸어볼게요.
int1 이 “A” 외인 조건과 int3 가 양수인 것만 남기고 int2 변수는 고려하지 않는다고(생략한다고) 가정해보면,

A 방법

data[data$int1!="A" & data$int3>=0, names(data)!="int2"]
##    int1       int3
## 2     B 0.07652803
## 6     F 0.44690176
## 10    J 0.52504933
## 11    K 0.21770481
## 13    M 0.16576876
## 15    O 0.25877834
## 16    P 1.14337630
## 17    Q 0.65212121
## 18    R 1.22687331
## 19    S 0.34854933
## 20    T 0.91780384
## 21    U 2.65309157
## 22    V 1.47426800
## 25    Y 2.20264869

B 방법

data %>% 
    filter(int1!="A", int3>=0) %>%
    select(-int2)
##    int1       int3
## 1     B 0.07652803
## 2     F 0.44690176
## 3     J 0.52504933
## 4     K 0.21770481
## 5     M 0.16576876
## 6     O 0.25877834
## 7     P 1.14337630
## 8     Q 0.65212121
## 9     R 1.22687331
## 10    S 0.34854933
## 11    T 0.91780384
## 12    U 2.65309157
## 13    V 1.47426800
## 14    Y 2.20264869

이때부터는 아마 B방법이 정서상 좋을 것 같아요.
원하시는 쉽게하는 방법이 될 것입니다.
단 dplyr package 를 공부해야 된다는게 필요하지만, 구글에 검색해보면 저보다 훨씬 재미있게 (한글로!)설명해주는 글들이 많이 있어요.

저도 처음에는 subset() 함수를 즐겨 사용했지만, 전처리 조건들이 많아지면서 subset() 은 잠시 데이터셋의 부분집합을 참조할 때만 사용하게 되었고, 코어코드에는 dplyr package 의 함수들을 파이프라인 연산자(%>%)를 이용하여 sub dataset 을 구축하고 있어요.

filter() 함수도 dplyr package 의 함수이신것을 아실테고 subset() 과 비슷한 함수지만 제가 드리고싶은 말은 dplyr package 의 다양한 함수들과 묶어 filter() 를 조화시킨다면 좀 더 통일성있는, 머리 굴러가는대로의 전처리 코딩이 가능한 것 같아요.
하지만 이것도 취향문제이기 때문에 또다른 좋은 방법이 있을 수도 있습니다.
※ 카페모임에 대해서 생각해본적은 사실 없었어요 ㅎㅎ… 하지만 최근에는 데이터분석관련해 여러가지 이런저런 수다를 나누고 싶은 카페 회원분들이 있다면 다같이 판교와 같은 테크노벨리(?)에서 분위기 좋게 커피타임을 가져보고싶은 생각은 있습니다 :)