data.frame에서 조건에 해당하는 row만 필터링하고 싶다.
아래와 같은 data.frame에서 group이 A인 row만 꺼내고 싶을 때는 subset()을 사용하면 된다.
여러 조건을 지정할 수도 있다.
- 참고
Quick-R: Subsetting Data
아래와 같은 data.frame에서 group이 A인 row만 꺼내고 싶을 때는 subset()을 사용하면 된다.
> Data <- data.frame('Row'=1:8, 'Conc'=sample(c(1:20), 8), 'group'=sample(LETTERS[1:4], 8, replace=TRUE));
Row Conc group
1 1 2 D
2 2 13 D
3 3 4 C
4 4 6 A
5 5 1 A
6 6 12 A
7 7 16 B
8 8 11 C
> subset(Data, group=='A');
Row Conc group
4 4 6 A
5 5 1 A
6 6 12 A
Row Conc group
1 1 2 D
2 2 13 D
3 3 4 C
4 4 6 A
5 5 1 A
6 6 12 A
7 7 16 B
8 8 11 C
> subset(Data, group=='A');
Row Conc group
4 4 6 A
5 5 1 A
6 6 12 A
여러 조건을 지정할 수도 있다.
> # group이 A, B, C인 것들만 필터링
> subset(Data, group %in% c('A', 'B', 'C'));
Row Conc group
3 3 4 C
4 4 6 A
5 5 1 A
6 6 12 A
7 7 16 B
8 8 11 C
> # group이 A, B, C인 것들과 Conc가 홀수인 것들만 필터링
> subset(Data, group %in% c('A', 'B', 'C') & 1 == (Row %% 2));
Row Conc group
5 5 1 A
8 8 11 C
> subset(Data, group %in% c('A', 'B', 'C'));
Row Conc group
3 3 4 C
4 4 6 A
5 5 1 A
6 6 12 A
7 7 16 B
8 8 11 C
> # group이 A, B, C인 것들과 Conc가 홀수인 것들만 필터링
> subset(Data, group %in% c('A', 'B', 'C') & 1 == (Row %% 2));
Row Conc group
5 5 1 A
8 8 11 C
- 참고
Quick-R: Subsetting Data







덧글