簡體   English   中英

從 R 中的列中提取特定單詞

[英]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 列中找到的完全相同的信息。

建議2

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.

建議3

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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM