này nắm để hai bước riêng biệt:
- Hình ra khi tình trạng của bạn là đúng, và do đó tính toán một vector của các phép toán luận, hoặc, như tôi thích, chỉ số của họ bằng cách gói nó vào
which()
- Tạo một cập nhật
data.frame
bằng cách loại trừ các chỉ mục từ bước trước đó.
Dưới đây là một ví dụ:
R> set.seed(42)
R> DF <- data.frame(sub=rep(1:4, each=4), day=sample(1:4, 16, replace=TRUE))
R> DF
sub day
1 1 4
2 1 4
3 1 2
4 1 4
5 2 3
6 2 3
7 2 3
8 2 1
9 3 3
10 3 3
11 3 2
12 3 3
13 4 4
14 4 2
15 4 2
16 4 4
R> ind <- which(with(DF, sub==2 & day==3))
R> ind
[1] 5 6 7
R> DF <- DF[ -ind, ]
R> table(DF)
day
sub 1 2 3 4
1 0 1 0 3
2 1 0 0 0
3 0 1 3 0
4 0 2 0 2
R>
Và chúng ta thấy rằng sub==2
chỉ có một còn với day==1
nhập cảnh.
Sửa Điều kiện hợp chất có thể được thực hiện với một 'hoặc' như sau:
ind <- which(with(DF, (sub==1 & day==2) | (sub=3 & day=4)))
và đây là một ví dụ hoàn mới
R> set.seed(1)
R> DF <- data.frame(sub=rep(1:4, each=5), day=sample(1:4, 20, replace=TRUE))
R> table(DF)
day
sub 1 2 3 4
1 1 2 1 1
2 1 0 2 2
3 2 1 1 1
4 0 2 1 2
R> ind <- which(with(DF, (sub==1 & day==2) | (sub==3 & day==4)))
R> ind
[1] 1 2 15
R> DF <- DF[-ind, ]
R> table(DF)
day
sub 1 2 3 4
1 1 0 1 1
2 1 0 2 2
3 2 1 1 0
4 0 2 1 2
R>
Nguồn
2011-08-18 19:23:41
Đó là vé. Cảm ơn. % In% có nghĩa là gì? –
Nó là một ví dụ về một toán tử infix và nó trả về một vectơ logic cho bạn biết các phần tử nào trong đối số đầu tiên được chứa trong đối số thứ hai. Xem? Khớp với vị trí được xác định. –
@BondedDust và ở đây cũng như –