我正在尝试仅从字符串中提取字符和数字。因为这些位置各不相同,所以我不能使用依赖于值的位置的语法。
例如,假设我有以下列x,其中值重复,但具有不同的数字:
x <- c("dummy.DR57", "dummy.hour41", "dummy.MAV43", "dummy.SB1")
我想创建两列: 1:只有“。”后面的字符的列。但在数字之前:
name <- c("DR", "hour", "MAV", "SB")
2:只有数字的列:
number <- c("57", "41", "43", "1")
我大部分都在尝试使用substr和str_sub - 但是我没有得到我需要的结果。
非常感谢任何帮助!
答案 0 :(得分:0)
> gsub(x, pattern = '[0-9]|dummy\\.', replacement = '')
[1] "DR" "hour" "MAV" "SB"
> gsub(x, pattern = '[a-zA-Z]|\\.', replacement = '')
[1] "57" "41" "43" "1"
答案 1 :(得分:0)
x <- c("dummy.DR57", "dummy.hour41", "dummy.MAV43", "dummy.SB1")
(number <- gsub('[[:alpha:]].', '', x))
# [1] "57" "41" "3" "1"
(name <- gsub("[^.]*[.]|[[:digit:]]", "", x))
# [1] "DR" "hour" "MAV" "SB"
答案 2 :(得分:0)
你可以试试这个:
gsub(pattern = "(^.*\\.)([[:alpha:]]+)([[:digit:]]+)",
replacement = "\\2",
x = x)
# [1] "DR" "hour" "MAV" "SB"
gsub(pattern = "(^.*\\.)([[:alpha:]]+)([[:digit:]]+)",
replacement = "\\3",
x = x)
# [1] "57" "41" "43" "1"