2017-03-20 6 views
0

解析されたテキストでxより小さい数値を数えたいと思います。解析されたテキストの処理

これは私のリストを与えるコードです:

library(rvest) 
library(reshape2) 


td <- read_html(x = "http://www.imdb.com/name/nm1287124/?ref_=tt_ov_dr") 
list<- as.list(td %>% # feed `main.page` to the next step%>% # load the page 
    html_nodes(".filmo-row") %>% # isloate the text 
    html_text())  

誰もが、例えば、2017年よりも少ない量数をカウントする方法を知っていますか?

(完全であると、最終的な目標は、ある年前にディレクタークレジットの量をカウントすることである)

+0

使用しているすべてのパッケージを指定してください。 – Roland

+0

rvest and reshape2 – nemja

答えて

0

のは、我々が持っているとしましょう:

番号は常に [0-9]以外のもので囲まれていると仮定すると、
text <- "asdasd8927askdmasjdo89jans1982736djnaos987anksdjnj2008da" 

、解説について

idx <- gregexpr("[0-9]+", text)[[1]] 
lens <- attr(idx, "match.length") 
nums <- lapply(seq_along(idx), function(i) { 
    substr(text, idx[i], idx[i] + lens[i] - 1) 
}) 
nums <- as.numeric(nums) 

?grep?substr:あなたはこれを行います関数を書くことができイオン) 最後に、あなたはより大きい2017

sum(nums > 2017) 


編集(コメント)

するのは我々だけ正確に4桁の数字を見てみたいとしましょう、その後、正規表現されている数字をカウントすることができます(およびインデックスはsubstr)を調整することができます。今度は「Not a Number」の4倍「a Number」「Not a Number」を検索します。したがって、「数字」部分のみを抽出するには、substrを後で開始し、1つ前の位置を先に停止します。

idx <- gregexpr("[^0-9][0-9]{4}[^0-9]", text)[[1]] 
lens <- attr(idx, "match.length") 
nums <- lapply(seq_along(idx), function(i) { 
    substr(text, idx[i] + 1, idx[i] + lens[i] - 2) 
}) 
nums <- as.numeric(nums) 

numsには2桁の4桁の数字しか含まれていません。

nums 
sum(nums > 2017) 
+0

回答ありがとうございますが、これは自分のデータでは機能しません。 (ちょうど完了するために、私はある年の前にディレクターのクレジットを数えたいと思う:http://www.imdb.com/name/nm1287124/?ref_=tt_ov_dr) – nemja

+0

まああなたは特定の文字列にコードを調整することができます。 4桁の数字だけを見たい場合は、この正規表現 '[^ 0-9] [0-9] {4} [^ 0-9]'を使うことができます。その後、正規表現は "NaN 4倍の数NaN"パターンを検索します。だから、 'substr'関数の開始と終了のインデックスを調整する必要があります。+1と-1:' substr(text、idx [i] + 1、idx [i] + lens [i] -2) ' – mRcSchwering

関連する問題