确定R中字符串中的重复数字
Determine repeating numbers in a string in R
我正在尝试识别数据框中具有重复数字序列的列值。
例如
> df
ColA
1 66046
2 73947
3 67456
4 67217
5 66861
6 67658
我要return66046、66861作为6个连续出现。
我尝试了以下...
df %>% filter(str_detect(as.String(df[1]), "[66]")) #with and without the squared brackets.
df[unlist(gregexpr("[6]{2}[[:digit:]]", df[1])), ][1]
很明显,这是行不通的。感谢任何帮助。
谢谢
我们可以用
指定计数
library(dplyr)
library(stringr)
df %>%
filter(str_detect(ColA, "6{2,}"))
-输出
# ColA
#1 66046
#5 66861
数据
df <- structure(list(ColA = c(66046L, 73947L, 67456L, 67217L, 66861L,
67658L)), class = "data.frame", row.names = c("1", "2", "3",
"4", "5", "6"))
使用
library(dplyr)
library(stringr)
df %>%
filter(str_detect(ColA, "(\d)\1"))
NODE
EXPLANATION
(
group and capture to :
\d
digits (0-9)
)
end of
what was matched by capture
派对迟到了,但base R
中有一个解决方案:
df[which(grepl("(\d)\1", df$ColA)),]
我正在尝试识别数据框中具有重复数字序列的列值。 例如
> df
ColA
1 66046
2 73947
3 67456
4 67217
5 66861
6 67658
我要return66046、66861作为6个连续出现。 我尝试了以下...
df %>% filter(str_detect(as.String(df[1]), "[66]")) #with and without the squared brackets.
df[unlist(gregexpr("[6]{2}[[:digit:]]", df[1])), ][1]
很明显,这是行不通的。感谢任何帮助。
谢谢
我们可以用
指定计数library(dplyr)
library(stringr)
df %>%
filter(str_detect(ColA, "6{2,}"))
-输出
# ColA
#1 66046
#5 66861
数据
df <- structure(list(ColA = c(66046L, 73947L, 67456L, 67217L, 66861L,
67658L)), class = "data.frame", row.names = c("1", "2", "3",
"4", "5", "6"))
使用
library(dplyr)
library(stringr)
df %>%
filter(str_detect(ColA, "(\d)\1"))
NODE | EXPLANATION |
---|---|
( |
group and capture to : |
\d |
digits (0-9) |
) |
end of |
|
what was matched by capture |
派对迟到了,但base R
中有一个解决方案:
df[which(grepl("(\d)\1", df$ColA)),]