2016-07-27 8 views
1

おそらく本当にシンプルですが、数字1を含むすべての行を取得しようとしています。私はgrepを成功させずに試しました。番号1のすべての行を取得する

Iは次のようになり、データフレームを有する:

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 

IがA1及びD1と、行1と5を意味する10または11 C3が1を含ん行を取得したいが、ありません。

だから、最終的な結果は次のようになります。事前に

C1  C2 C3 C4 
1 1 Plate1 A1 3 
5 45 Plate4 D1 2 

感謝。

答えて

1

grepを使用できます。文字列(^)の先頭から1つ以上のアルファベット(大文字の場合は[A-Z]+)のパターンをマッチさせ、最後に数字「1」($)を列 'C3'の文字列に一致させ、行のサブセットに使用します。

t[grep("^[A-Z]+1$", t$C3),] 
# C1  C2 C3 C4 
#1 1 Plate1 A1 3 
#5 45 Plate4 D1 2 
+1

もちろん、正規表現についての小さな説明はありますか?私は$を逃していたようだ。これは何ですか? – JMarchante

関連する問題