[英]R : gregexpr across multiple columns and return single vector
我有多個包含數據字符串的列。
(data $ product,data $ price,data $ overview1,data $ overview2,data $ overview3,data $ overview4)
我想創建一個僅包含以字符串“ Material:”開頭的字符串的新矢量
設置GREP的模式
matpattern <- "((?<=Material: ).*|(?<=Materials: ).*)"
獲取開始時具有素材的字符串
mat <- gregexpr(matpattern, data$Overview1, perl=TRUE)
創建向量以存儲字符串
data$material1 <- regmatches(data$Overview1, mat, invert = FALSE)
/ 重復進行概述2 /
mat <- gregexpr(matpattern, data$Overview2, perl=TRUE)
data$material2 <- regmatches(data$Overview2, mat, invert = FALSE)
該聲明
z <- cbind(material1, material2)
當我想要一個列表時給出一個矩陣
有沒有一種方法可以使lapply和gregexpr跨多個列工作,然后將新字符串放在單個列中?
我看了下面,無濟於事,謝謝您的幫助。
好。 這是一個完整的技巧,但是我希望最終輸出是向量,而不是列表(排除適用,適用嗎?)
這將獲取4列中所需字符串的位置和長度
m1 <-gregexpr(matpattern,data [,c(“ Overview1”)],perl = TRUE)
m2 <-gregexpr(matpattern,data [,c(“ Overview2”)],perl = TRUE)
m3 <-gregexpr(matpattern,data [,c(“ Overview3”)],perl = TRUE)
m4 <-gregexpr(matpattern,data [,c(“ Overview4”)],perl = TRUE)
此操作將創建一組向量
mat1 <-regmatches(data [,c(“ Overview1”)],m1,invert = FALSE)
mat2 <-regmatches(data [,c(“ Overview2”)],m2,invert = FALSE)
mat3 <-regmatches(data [,c(“ Overview3”)],m3,invert = FALSE)
mat4 <-regmatches(data [,c(“ Overview4”)],m4,invert = FALSE)
然后我將所有向量粘貼到一個大向量中(未來的操作將忽略“ character(0)”)
data $ Material <-paste(mat1,mat2,mat3,mat4)
然后,我可以使用此向量根據data $ Material中某些文本字符串的出現來計算data $ price的平均值
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.