[英]Splitting a column in an R dataframe
我在R數據框中有一列數據,其值如下:
Blue-#105
Green-#8845
Yellow-#5454
Blue-#999
我想刪除最后一個數字部分(從 - #開始),以便Blue-#999
和Blue-#105
在繪圖時被認為是相同的。 我怎么能做到這一點?
使用正則表達式:
> DF <- data.frame(col=c("Blue-#105", "Green-#8845", "Blue-#999"))
> DF
col
1 Blue-#105
2 Green-#8845
3 Blue-#999
> DF$col <- gsub("-\\#.*", "", DF$col)
> DF
col
1 Blue
2 Green
3 Blue
>
在這里我們說所有的字符串都以-#
(其中注釋char #
需要被轉義)開頭,然后是正則表達式中的任何 --- .*
任何字符(點)重復多次,因為它適合(明星)---將被空字符串替換,換句話說,被刪除。
使用sub或gsub函數。 對於您的示例,您可以執行以下操作:
newcolors <- sub("^([^-]*)-.*$", "\\1", oldcolors )
這假設顏色在矢量'oldcolors'中並將結果放入新顏色中。 模式從字符串的開頭開始(^)然后匹配0個或更多不是破折號的字符([^ - ] ),周圍的parens表示保存匹配的內容。 然后它匹配一個破折號,后跟另外的字符(。 )直到字符串($)的結尾,然后匹配的部分(整個字符串)被替換為parens(顏色)中匹配的任何內容。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.