如果在400萬觀測數據文件的每一行中出現約2000字的一個,我正在使用R和寫腳本來計算腳本。具有觀察值(df)的數據集包含兩列,一列包含文本(df $ lead_paragraph),另一列包含日期(df $ date)。如果在400萬觀測數據集的每一行中出現一個字,則計數
使用以下內容,我可以計算列表(p)中的任何單詞是否出現在df文件的lead_paragraph列的每一行中,並將答案作爲新列輸出。
df$pcount<-((rowSums(sapply(p, grepl, df$lead_paragraph,
ignore.case=TRUE) == TRUE, na.rm=T) > 0) * 1)
但是,如果我包括一覽P太多的話,運行代碼崩潰R.
我的備用策略是簡單地碎裂成片,但我不知道是否有一個更好的,這裏使用更優雅的編碼解決方案。我的傾向是使用for循環,但是我讀的所有內容都表明這不是R的首選。我對R很新,並且不是一個很好的編碼器,所以如果不清楚,我很抱歉。
df$pcount1<-((rowSums(sapply(p[1:100], grepl, df$lead_paragraph,
ignore.case=TRUE) == TRUE, na.rm=T) > 0) * 1)
df$pcount2<-((rowSums(sapply(p[101:200], grepl, df$lead_paragraph,
ignore.case=TRUE) == TRUE, na.rm=T) > 0) * 1)
...
df$pcount22<-((rowSums(sapply(p[2101:2200], grepl, df$lead_paragraph,
ignore.case=TRUE) == TRUE, na.rm=T) > 0) * 1)
一些事情/提示,但絕對不是解決方案(還)。首先,數據越大,離開基數R越好(也許使用'data.tables'?)。其次,我會使用'any'函數,在這種情況下,您可以跳過'rowSums'部分,以及不等式和乘法。第三,你知道這些單詞是否會隨機出現,或者是否有某種模式,即在開始或結束時?如果是的話,這將大大簡化事情。最後,嘗試解析文本,擺脫不必要的內存使用。 –
目標是計算每行中存在的'p'中任何字符串的出現次數嗎? 這樣: '對於數據幀x的每一行,計算P中任何字符串的N個出現次數並將其合計到一個新行中? –
@CarlBoneri - 是的,最終,我只需要知道p中的任何字符串是否出現在給定的數據行中(二進制,真/假),但計數就足夠了。 – chydock