我有以下數據框,並且努力檢測單獨字符串元素中的列表項。 在以下數據框中:將列表中的多個項目匹配到R中的字符串
original_df <- structure(list(title = c("Film Review: Almost Christmas", "Film Review: Mascots",
"Women s Basketball Upstages No. 2 California Baptist", "Men s Basketball Goes 2-0 In Opening Home Matchups",
"Women s Soccer Wins 16th Consecutive Game, Moves Onto Third Round of Tournament",
"The Hype About Hullabaloo"), tags = c("[u'Arts & Entertainment', u'Films & TV', u'Trending', u'Almost Christmas', u'Danny Glover', u'David E. Talbert', u'family', u'Film', u'Gabrielle Union', u'Holiday', u'JB Smoove', u'movie', u'review']",
"[u'Arts & Entertainment', u'Films & TV', u'Homepage', u'Trending', u'Chris O\\u2019Dowd', u'Christopher Guest', u'Ed Begley Jr.', u'Film', u'Fred Willard', u'Jane Lynch', u'Mascots', u'movie', u'Netflix', u'Parker Posey', u'review', u'Spinal Tap']",
"[u'Basketball', u'Homepage', u'Sports', u'Trending', u'Beth Mounier', u'cassie macleod', u'Dalayna Sampton', u'Joleen Yang', u'Mikayla Williams', u'Taylor Tanita', u'UCSD', u\"Women's Basketball\"]",
"[u'Basketball', u'Homepage', u'Sports', u'Trending', u'Adam Klie', u'Azusa Pacific University', u'CCAA', u'Dixie State', u\"Men's Basketball\", u'Tritons', u'UCSD']",
"[u'Homepage', u'Soccer', u'Sports', u'Trending', u'Azusa Pacific', u'Jordyn McNutt', u\"Katie O'Laughlin\", u'Mary Reilly', u'NCAA Division-II', u'UCSD', u\"Women's Soccer\"]",
"[u'Arts & Entertainment', u'Music', u'Slider', u'AS', u'asce', u'Concerts', u'Council', u\"Founder's Day\", u'Hullabaloo', u'Isaiah Rashad', u'Rap', u'Responsible Action Protocol', u'sun god', u'UCSD']"
)), .Names = c("title", "tags"), row.names = 215:220, class = "data.frame")
有一個標題欄和標籤欄。由於數據操作的原因,標籤列不是列表。它是一個看起來像一個數組的字符串。
我有一個單獨的名單稱爲體育這是各種運動的列表。
sports <- c("Basketball", "Soccer", "Baseball")
我想在原始數據框中創建一個新列,以指示哪個運動已被檢測到。 我開始使用grepl並創建了以下功能:
detectSports <- function(sport_item){
sport_in_tag <- grepl(tolower(sport_item),tolower(original_df$tags))
sport_in_tag
}
和此功能適用於運動的列表:
ss <- lapply(sports, detectSports)
的結果是合乎邏輯的矢量的列表。 我有麻煩匹配這回到我原來的dataframe.I相信我可以利用colnames,但我不太積極如何工作。
感謝您的任何建議! 謝謝
謝謝!不幸的是,有可能有多場比賽。這只是一個示例數據框,但完整的數據集確實包含多個行。 – RCN
如果有多個匹配,那麼輸出將如下所示(用逗號分隔的運動使用相同的代碼): [1]「」「」「籃球,足球」「籃球」「足球」「」,確實那看起來好嗎? –
我的歉意,我剛剛重讀並測試了答案。是的,這是完美的! – RCN