可能非常简单,但我正在尝试检索包含数字1的所有行。我尝试了grep但没有成功,看起来我真的很愚蠢使用正则表达式。
我有一个如下所示的数据框:
t = data.frame(C1 = c(1,2,23,26,45), C2 = c("Plate1","Plate1","Plate2","Plate2","Plate4"), C3 = c("A1","A2","B10","C11","D1"), C4 = c(3,6,7,1,2))
t
C1 C2 C3 C4
1 1 Plate1 A1 3
2 2 Plate1 A2 6
3 23 Plate2 B10 7
4 26 Plate2 C11 1
5 45 Plate4 D1 2
我想检索C3包含1但不包含10或11的行,这意味着第1行和第5行包含A1和D1。
所以最终的结果是:
C1 C2 C3 C4
1 1 Plate1 A1 3
5 45 Plate4 D1 2
提前致谢。
答案 0 :(得分:1)
我们可以使用grep
。匹配字符串开头的一个或多个字母(大写[A-Z]+
)的模式(^
),后跟列中字符串末尾的数字1($
) #39; C3'并使用它来对行进行子集化。
t[grep("^[A-Z]+1$", t$C3),]
# C1 C2 C3 C4
#1 1 Plate1 A1 3
#5 45 Plate4 D1 2