例如,我有一個列,其中的字符是這樣的
"Object=house colour=blue size=big", "Object=roof colour=red size=small", "Object=window colour=green size=medium"
我想只提取顏色之后的單詞并創建一個新列。所以看起來像這樣
"blue", "red", "green"
我已經開始嘗試這樣做,str_extract 但對如何指定事物非常迷茫。到目前為止我有
colour<- str_extract(string = df, pattern = "(?<=colour= ).*(?=\\,)")
我將如何解決這個問題?
uj5u.com熱心網友回復:
和之后沒有空格=,我們可以用它\\S 來指定一個或多個非空格
library(stringr)
str_extract(string = df, pattern = "(?<=colour=)\\S ")
[1] "blue" "red" "green"
資料
df <- c("Object=house colour=blue size=big", "Object=roof colour=red size=small",
"Object=window colour=green size=medium")
uj5u.com熱心網友回復:
一個可能的解決方案:
library(tidyverse)
c("Object=house colour=blue size=big", "Object=roof colour=red size=small", "Object=window colour=green size=medium") %>%
str_extract("(?<=colour\\=)\\S ")
#> [1] "blue" "red" "green"
uj5u.com熱心網友回復:
您還可以轉換為 dcf,并將其轉換為 data.frame:
read.dcf(textConnection(paste(chartr("= ", ":\n", text), collapse = "\n\n")), all =TRUE)
Object colour size
1 house blue big
2 roof red small
3 window green medium
然后你可以選擇你想要的列
uj5u.com熱心網友回復:
基礎 R 解決方案:
df <- c(
"Object=house colour=blue size=big",
"Object=roof colour=red size=small",
"Object=window colour=green size=medium"
)
res <- data.frame(
object_info = df,
object_colour = gsub(
".*\\s colour\\=(\\S ).*",
"\\1",
df
),
row.names = NULL,
stringsAsFactors = FALSE
)
res
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/482650.html
