R提取并获取字符串的相应数值

时间:2017-09-14 04:56:19

标签: r function extract

需要帮助查找函数来提取和获取由" - "

分隔的请求字符串的值

数据:

x <- c("AA-AA/BB-11/CC-22/dd-1", "AA-AA/BB-33/CC-331")

所需的输出:

BB should get vector of (11, 33)

CC should get vector of (22, 331)

2 个答案:

答案 0 :(得分:2)

您可以使用stringr执行任务:

library(stringr)
x <- c("AA-AA/BB-11/CC-22/dd-1", "AA-AA/BB-33/CC-331")
BB <- as.numeric(str_match(x, "/BB-([0-9]+)")[, 2])
CC <- as.numeric(str_match(x, "/CC-([0-9]+)")[, 2])

答案 1 :(得分:1)

你可以使用chartr来改变你的分裂字符,然后将其输入read.table

tmp <- read.table(text=chartr("-/", " \n", x), stringsAsFactors=FALSE)

#  V1  V2
#1 AA  AA
#2 BB  11
#3 CC  22
#4 dd   1
#5 AA  AA
#6 BB  33
#7 CC 331

如果您严格需要单独的矢量:

split(tmp$V2, tmp$V1)

#$AA
#[1] "AA" "AA"
#
#$BB
#[1] "11" "33"
#
#$CC
#[1] "22"  "331"
#
#$dd
#[1] "1"