簡體   English   中英

R:跨多列的gregexpr並返回單個向量

[英]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跨多個列工作,然后將新字符串放在單個列中?

我看了下面,無濟於事,謝謝您的幫助。

將R向量轉換為1個元素的字符串向量

R中的正則表達式-將一列與另一列進行比較

使用正則表達式選擇R數據框中的行

好。 這是一個完整的技巧,但是我希望最終輸出是向量,而不是列表(排除適用,適用嗎?)

這將獲取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.

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