我想分隔一列字符串字符。在一栏里,我要所有大写的单词。字符串可以有一个或两个大写单词。下面是dataframe的一个例子:
mydataframe <- data.frame(species= c("ACTINIDIACEAE Actinidia arguta",
"ANACARDIACEAE Attilaea abalak E.Martínez & Ramos",
"LEGUMINOSAE CAESALPINIOIDEAE Biancaea decapetala (Roth) O.Deg."),
trait= c(1,2,4))
我尝试使用separate
和下面的正则表达式:"\\s+(?=[A-Z]+)"
。这不起作用。对于具有两个以上大写单词的字符串,它将第一个和第二个大写单词分开,删除字符串的其余部分。下面是代码:
mydataframe <- mydataframe %>%
separate(species, into = c("family", "sp"), sep ="\\s+(?=[A-Z]+)")
这是代码的结果:
| 家庭|sp|特质|
| - -----|- -----|- -----|
| 猕猴桃科|软枣猕猴桃|1|
| 漆树科|阿巴拉阿提莱蛛|2|
| 豆科|海葵亚科|4|
我需要以下格式:
| 家庭|sp|特质|
| - -----|- -----|- -----|
| 猕猴桃科|软枣猕猴桃|1|
| 漆树科|阿巴拉阿提莱蛛|2|
| 豆亚科|无瓣扁盖蕨|4|
1条答案
按热度按时间rsaldnfx1#
我认为我们可以使用(base)
strcapture
来查找一行中最后出现的两个大写字母,然后是空格,然后是至少有一个小写字母的单词。