我在R中有如下数据:

USDZAR Curncy
R157 Govt
SPX Index

换句话说,一个单词(在这种情况下为Bloomberg安全性标识符),后跟另一个单词,即安全性类,以空格分隔。我想去除上课和去的空间:
USDZAR
R157
SPX

在R中最有效的方法是什么?它是正则表达式还是必须像使用mid和find命令那样在MS Excel中做一些事情?例如在Excel中,我会说:
=MID(@REF, 1, FIND(" ", @REF, 1)-1)

这意味着返回一个从字符串1开始到第一个空格的字符号结束的子字符串(小于1则删除实际空格)。

我是否需要在R中做类似的事情(在这种情况下,等效项是什么),或者正则表达式可以在这里提供帮助吗?谢谢。

最佳答案

1)请尝试以下操作:正则表达式匹配一个空格,后跟任意字符序列,并且sub用零个字符的字符串替换它:

x <- c("USDZAR Curncy", "R157 Govt", "SPX Index")
sub(" .*", "", x)
## [1] "USDZAR" "R157"   "SPX"

2)如果您希望将两个单词分别放在数据框中的单独列中,则如下所示。在这里,as.is = TRUE使列成为字符而不是因数。
read.table(text = x, as.is = TRUE)
##       V1     V2
## 1 USDZAR Curncy
## 2   R157   Govt
## 3    SPX  Index

关于regex - R中的正则表达式删除第一个空格后的所有字符吗?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/6240026/

10-12 17:52
查看更多