R:分解字符串并获取最后一个元素(按行)
我有以下数据框R:分解字符串并获取最后一个元素(按行),r,tidyverse,R,Tidyverse,我有以下数据框 df问题中显示的预期输出有4个元素,但输入有6行,因此我们假设问题中显示的预期输出是错误的,正确的输出如下所示。tes) 现在假设这两个数字前面有一个非数字,请注意\D表示非数字(反斜杠必须在双精度范围内加倍) df %>% mutate(last2 = as.numeric(sub(".*\\D", "", var1))) 给予: var1 last2 1 f253.02.ds.a01 1
df问题中显示的预期输出有4个元素,但输入有6行,因此我们假设问题中显示的预期输出是错误的,正确的输出如下所示。tes)
现在假设这两个数字前面有一个非数字,请注意\D表示非数字(反斜杠必须在双精度范围内加倍)
df %>% mutate(last2 = as.numeric(sub(".*\\D", "", var1)))
给予:
var1 last2
1 f253.02.ds.a01 1
2 f253.02.ds.a02 2
3 f253.02.ds.x.a01 1
4 f253.02.ds.x.a02 2
5 f253.02.ds.a10 10
6 test NA
使用separate
,我们可以使用正则表达式查找
library(dplyr)
library(tidyr)
df %>%
separate(var1, into = c('prefix', 'suffix'),
sep="(?<=[a-z])(?=\\d+$)", remove = FALSE, convert = TRUE)
# var1 prefix suffix
#1 f253.02.ds.a01 f253.02.ds.a 1
#2 f253.02.ds.a02 f253.02.ds.a 2
#3 f253.02.ds.x.a01 f253.02.ds.x.a 1
#4 f253.02.ds.x.a02 f253.02.ds.x.a 2
#5 f253.02.ds.a10 f253.02.ds.a 10
#6 test test NA