来自字符串的一部分的子集数据

时间:2015-10-20 18:43:15

标签: r string subset

我有以下数据集:

dat2 <- read.table(header=TRUE, text="
ID  De  Ep  Ti  ID1
A1123    A117 121 100 11231
                   A1123MDN A108 C207 D110 E11232
                   A1124MDN A122 C207 D110 E11232
                   A1124MDN A117 C207 D110 E11232
                   A1124 A122 C208 D110 E11232
                   B1125MDN A108 C208 D110 E11232
                   B1125MDN A108 C208 D110 E11232
                   B1126MDN A122 C208 D110 E11233
                   C1126 A109 C208 D111 E11233
                   ")
dat2
        ID   De   Ep   Ti    ID1
1    A1123 A117  121  100  11231
2 A1123MDN A108 C207 D110 E11232
3 A1124MDN A122 C207 D110 E11232
4 A1124MDN A117 C207 D110 E11232
5    A1124 A122 C208 D110 E11232
6 B1125MDN A108 C208 D110 E11232
7 B1125MDN A108 C208 D110 E11232
8 B1126MDN A122 C208 D110 E11233
9    C1126 A109 C208 D111 E11233

我希望在第一列中基于sting MDN的一部分对数据集进行子集化。冗长的代码是:

mdn <- subset(dat2, ID=="A1123MDN"|ID=="A1124MDN"| ID=="B1125MDN"| ID=="B1126MDN")
mdn
        ID   De   Ep   Ti    ID1
2 A1123MDN A108 C207 D110 E11232
3 A1124MDN A122 C207 D110 E11232
4 A1124MDN A117 C207 D110 E11232
6 B1125MDN A108 C208 D110 E11232
7 B1125MDN A108 C208 D110 E11232
8 B1126MDN A122 C208 D110 E11233

数据集有456,345行。按照上述方式进行子集是不可行的。

1 个答案:

答案 0 :(得分:1)

尝试使用grep

dat2[grep("MDN",dat2$ID),]

或使用grpl

subset(dat2, grepl("MDN",dat2$ID))