我有一个像这样的data.frame:
SO <- data.frame(coiffure_IDF$SIREN, coiffure_IDF$L6_NORMALISEE )
coiffure_IDF.SIREN coiffure_IDF.L6_NORMALISEE
1 54805015 75008 PARIS
2 300086907 94210 ST MAUR DES FOSSES
3 300090453 94220 CHARENTON LE PONT
4 300209608 75007 PARIS
5 300570553 95880 ENGHIEN LES BAINS
6 301123626 75019 PARIS
7 301362349 92300 LEVALLOIS PERRET
我想要这个:
coiffure_IDF.SIREN codpos_norm ville
1 54805015 75008 PARIS
2 300086907 94210 ST MAUR DES FOSSES
3 300090453 94220 CHARENTON LE PONT
4 300209608 75007 PARIS
5 300570553 95880 ENGHIEN LES BAINS
6 301123626 75019 PARIS
7 301362349 92300 LEVALLOIS PERRET
所以我用了regex:
SO2<- SO %>% extract(col="coiffure_IDF.L6_NORMALISEE", into=c("codpos_norm", "ville"), regex="(\\d+)\\s+(\\S+)")
所以我的右列是“ codpos_norm”,但是在第2行的“ ville”中,我只有“ ST”而不是“ ST MAUR DES FOSSES”。在第3行中只是“ CHARENTON”,依此类推
因此我尝试在正则表达式中添加一些\\s+
和\\S+
,但是R告诉我它们属于多个组,并且必须只有2个组。
我该怎么办?
答案 0 :(得分:2)
您需要匹配组2中其余的字符串,\S
构造仅匹配非空格字符。使用.+
来匹配任何1个以上的字符,直到字符串结尾:
extract(col="coiffure_IDF.L6_NORMALISEE", into=c("codpos_norm", "ville"), regex="(\\d+)\\s+(.+)")
您可以使用.*
来匹配空字符串(如果1个空格后没有文本)。