簡體   English   中英

拆分R數據幀中的列

[英]Splitting a column in an R dataframe

我在R數據框中有一列數據,其值如下:

Blue-#105
Green-#8845
Yellow-#5454
Blue-#999

我想刪除最后一個數字部分(從 - #開始),以便Blue-#999Blue-#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.

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