繁体   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