2013-10-02 96 views
0

相匹配的號碼,我需要做的看似簡單的東西,但無法找到該函數R,它使單元格的行號。 我有這樣的因素列數據幀:查找在數據幀列中的數字,並提取R中

structure(list(A = structure(c(1L, 4L, 2L, 10L, 7L, 3L, 6L, 5L, 
8L, 9L), .Label = c("01WEA8002", "01WEA8007", "01WEA8016", "02WEA8004", 
"02WEA8018", "03WEA8017", "04WEA8015", "07WEA8019", "08WEA8020", 
"09WEA8014"), class = "factor")), .Names = "A", class = "data.frame", row.names = c(NA, 
-10L)) 

我需要給我一個包含給定數量的特定單元格的行編號。 所以說我有

n<-8017 

我想要的代碼去列,並期待在這個數字每個細胞,當它發現它的細胞之一的字符串內給我的行數,其中它是位於。因此,對於我的示例(8017),我們可以看到該數字可以在字符串「03WEA8017」中列的第7行中找到。

我提供給可變數目「n」是總是在柱唯一的,因此總會有僅一個含有單詞「WEA」後的字符串的末尾該號碼細胞。 「WEA」之前的數字可以改變,但我想把重點放在'n'中的數字上,並忽略其餘的數字,因爲它只能是包含它的一個單元格。

因此,基本上我需要代碼來抓取變量'n',轉到數據框的列,在每個字符串中查找數字,當它找到它時,給我作爲輸出行號匹配細胞位於。

我試圖儘可能清楚,在此先感謝給予任何幫助。

回答

2
grep("8017", as.character(dataset$A)) 
+0

謝謝:)它的工作原理 – RabidHealer

+0

事實證明,經過一些測試後,我想查找的列中的數字不是唯一的。有時這個數字是另一個更大的數字的一部分。例如,在我的例子中,「8017」是包含「01WEA80178」以及「03WEA8017」的單元格的一部分,使用'grep'時,我得到一個具有兩個行號的向量。有沒有辦法告訴R只查找確切的數字?我的意思是,尋找一個具有我想要的號碼的單元格,或者看看確切的字符串「03WEA8017」?請注意,我使用整個字符串,它也可以是另一個字符串的一部分,所以我需要查找確切的字符串,不多也不少。 – RabidHealer

+0

明白了!使用'^'來表示字符串的開始和'$'的結尾。然後我使用了「^ 03WEA8017 $」,我得到了我需要的結果。 – RabidHealer