[英]extracting a specific word from a column in R
嘿,我是 R 的新手,正在 Rstudio 做一個小項目,我需要一些幫助。 我的數據看起來類似於以下內容
x=訓練 1 - 星期一 - 12h30-15h00
周六 16 點至 20 點
培訓 2 - Friday-06h-08h0
培訓 1 - 周二 - 13h30-15h00
周日 16 點至 20 點
培訓 3 - Thursday-9h00-10h00
x 是 dataframe 中的一列。
我的問題是如何提取特定的詞,例如 (Sunday, Monday, Tuesday etc...
它應該是這樣的:
如果 x 包含星期六,則該行應在 New_column 中顯示星期六
如果 x 包含星期日,則該行應在 New_column 中顯示星期日
如果 x 包含星期二,則該行應在 New_column 中顯示星期二
我創建了一個包含所有工作日的字符串
weekdays <- paste0(weekdays(seq(Sys.Date(), by =1,length = 7)), collapse = "|")
在下文中,我嘗試從 My_Data$Traininghour 列中提取工作日
My_Data$JOUR<- sub(sprintf('.*(%s).*', weekdays), '\\1',My_Data$Traininghour )
它為 My_Data$JOUR 列提供與在 My_Data$Traininghour 列中找到的完全相同的信息。
My_Data$JOUR<-regmatches(My_Data$Traininghour, regexpr (weekdays, My_Data$Traininghour))
建議 2 給出以下錯誤:
Assigned data `regmatches(My_Data$Traininghour, regexpr (weekdays, My_Data$Traininghour))` must be compatible with existing data.
x Existing data has 4903 rows.
x Assigned data has 0 rows.
i Only vectors of size 1 are recycled.
Run `rlang::last_error()` to see where the error occurred.
My_Data$JOUR <-stringr::str_extract(My_Data$Traininghour, weekdays)
建議 3 在 My_Data$JOUR 列的每一行中返回 NA
我不確定我做錯了什么
創建一個包含所有工作日的字符串以用作正則表達式模式。
weekdays <- paste0(weekdays(seq(Sys.Date(), by =1,length = 7)), collapse = "|")
在基數 R 中,我們可以從x
向量中提取工作日,如下所示:
sub(sprintf('.*(%s).*', weekdays), '\\1', x)
[1] "Monday" "Saturday" "Friday" "Tuesday" "Sunday" "Thursday"
甚至
regmatches(x, regexpr(weekdays, x))
[1] "Monday" "Saturday" "Friday" "Tuesday" "Sunday" "Thursday"
使用stringr
package 更簡單,如下所示:
stringr::str_extract(x, weekdays)
[1] "Monday" "Saturday" "Friday" "Tuesday" "Sunday" "Thursday"
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.