ID | Tweet_ID | Tweet
1 12345 @sprintcare I did.
2 SPRINT @12345 請給我們發一個私人資訊。
3 45678 @apple 我的資訊不正確。
4 APPLE @45678 什么資訊不正確。
我想做的是通過一些case_when陳述句來提取所有具有公司名稱句柄的推文,并忽略數字句柄來創建一個新欄位。
目前我正在玩弄的代碼,但沒有成功:
tweet_pattern <- " @[^0-9.-]w "
客戶 <- 客戶 %>%
Response_To_Comp = ifelse(str_detect(Tweet, tweet_pattern),
str_extract(Tweet, tweet_pattern),/span>
NA_character_))
期望的輸出:
ID | Tweet_ID | Tweet | Response_To_Comp
1 12345 @sprintcare I did. sprintcare
2 SPRINT @12345 請給我們發一個私人資訊。 NA
3 45678 @apple 我的資訊不正確。 apple
4 APPLE @45678 什么資訊不正確。 NA
uj5u.com熱心網友回復:
你可以使用一個lookbehind regex來提取'@'之后的文本,并且其中有一個或多個A-Za-z字符。
library(dplyr)
library(stringr)
tweet_pattern <- "(?<=@) [A-Za-z] "
df %> %mutate(Response_To_Comp =str_extract(Tweet, tweet_pattern))
# ID Tweet_ID Tweet Response_To_Comp
#1 1 12345 @sprintcare I did. sprintcare
#2 2 SPRINT @12345 Please send us a Private Message. <NA>.
#3 3 45678 @apple 我的資訊不正確。 apple
#4 4 APPLE @45678 什么資訊是不正確的。 <NA>
uj5u.com熱心網友回復:
使用str_detect和str_replace
library(stringr)
library(dplyr)
客戶%>%
mutate(Response_to_Comp =case_when(str_detect(Tweet。 "@[^0-9-] ") ~
str_replace(Tweet, "@([A-Za-z] )`s . *", "1")))
ID 鳴叫_ID 鳴叫回應_Comp
1 1 12345 @sprintcare I did. Sprintcare
2 2 SPRINT @12345 請給我們發一個私人資訊。 <NA>
3 3 45678 @apple 我的資訊不正確。 apple
4 4 APPLE @45678 什么資訊不正確。 <NA>
data
Customer < -結構(list(ID = 1。 4, Tweet_ID = c("12345"/span>。 "SPRINT", "45678",
"APPLE")。 Tweet = c("@sprintcare I did. ", "@12345 Please send us a Private Message.
"@apple 我的資訊不正確。", "@45678 什么資訊不正確。"
)), class = "data. frame",行。 names = c(NA。 -4L))
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/307557.html
標籤:
上一篇:保留所有字母以及數字和下劃線的Regex(印地語字母的問題)。
下一篇:處理不同數量的變數的Regex
