我有一個變數,其中觀察將有一個人放入其中的各種注釋。任何給定觀察中的一些詞可能是需要跟蹤的關鍵詞。
如果我有一個關鍵詞串列,是否有一種簡化的方法可以從該串列中創建變數,然后搜索現有的觀察結果以標記該詞是否在其中?一個額外的組成部分是,由于人為因素,不能指望單詞按特定順序排列,或者可能會省略空格、大寫/小寫字母等分隔符。也有可能像“航班”這樣的詞可能會漏掉“s”。因為關鍵字可能會更改,是否還有一種方法可以對其進行編碼,以便可以將單詞創建為可以更新的值,然后重新運行以更新變數?
在 df 下面的關鍵字串列中,我正在尋找 abc、xyz、航班。
df <- read.table(text =
"ID Notes
ID-0001 'ABC project xyz'
ID-0002 'XYZ'
ID-0003 'ABCschedule flightsok test'
ID-0004 'flight, abc'
ID-0005 'normal notes no key'", header = T)
所需的輸出如下所示:
desired.output <- read.table(text =
"ID Notes abc xyz flights
ID-0001 'ABC project xyz' 1 1 0
ID-0002 'XYZ' 0 1 0
ID-0003 'ABCschedule flightsok' 1 0 1
ID-0004 'flight, abc' 1 0 1
ID-0005 'normal notes no key' 0 0 0 ", header = T)
我發現了這個類似的問題,但它并不是我想要的,因為變數名是從觀察中的每個單詞創建的。 R:將字串拆分為不同的變數,如果字串包含該單詞則賦值為 1
感謝您的幫助!
uj5u.com熱心網友回復:
我們可能會grepl為此使用
transform(df, abc = (grepl('\\babc', Notes, ignore.case = TRUE)),
xyz = (grepl('\\bxyz\\b', Notes, ignore.case = TRUE)),
flights = (grepl('\\bflights?', Notes, ignore.case = TRUE)))
ID Notes abc xyz flights
1 ID-0001 ABC project xyz 1 1 0
2 ID-0002 XYZ 0 1 0
3 ID-0003 ABCschedule flightsok test 1 0 1
4 ID-0004 flight, abc 1 0 1
5 ID-0005 normal notes no key 0 0 0
或者只是遍歷感興趣的單詞并使用 grepl
df[c('abc', 'xyz', 'flights')] <- (sapply(c('abc', 'xyz', 'flights'), function(x) grepl(x, df$Notes)))
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/326792.html
