그림에 표시된 것처럼 문자열 뒤에 숫자 "0"이 포함 된 단어의 기간을 계산하고 싶습니다 (작업하려는 문자가있는 단어 아래에 빨간색 점을 삽입했습니다). 와일드 카드와 같은 것이 있으므로이 문자열이 포함 된 단어로만 작업 할 수 있습니까?R을 사용하여 와일드 카드를 사용하여 문자열을 식별하는 방법은 무엇입니까?
답변
사용 : 당신이 당신의 검색 매개 변수에 의해 서브 세트 전체 데이터 집합을보고 싶다면
grep('0',resultado2$TextGridLabel)
가하는 0과 행을 찾기 위해 바로 사용 괄호 :
resultado2[grep('0',resultado2$TextGridLabel),]
'TextGridLabel'에'S10XXXXXXX'가 있으면 제대로 작동하지 않을 것입니다 – useR
? regex에서 반환 한 도움말을 읽어야합니다. R에서 정규 표현식을 사용하는 것에 대한 요약을 제공합니다. 또한 정규 표현식을 사용할 수있는 다양한 함수를 참조 할 것입니다. 데이터가 위의 dataframe, 안양에 있다면
예를 들어, :
grep(x=df$TextGridLabel, pattern="^.*0.+$")
는 아무것도로 시작하는 0을 포함하고 0 후 적어도 하나 개의 문자를 가진 모든 값의 인덱스를 반환합니다.
건배! filename
경기의 일부가 될 수 없습니다해야하는 경우
'TextGridLabel'에'S10XXXXXXX'가 있으면 제대로 작동하지 않을 것입니다 – useR
@useR 정규 표현식을 사용하는 전문가가 아닙니다. 하지만 귀하의 주장을 재현 할 수는 없습니다. 어떤 일이 일어날 지 알아 내려고 할 때 얻는 결과는 다음과 같습니다. '><-c ("S10XXXXXXXX", "D10W", "D111America") ' '> grep (a, pattern = "^. * 0. + $ ")' '[1] 1 2' ... 이것은 내가 기대하는 것이고 무엇이 요구되었는지를 믿습니다. – Nate
OP의 질문이 완전히 명확하지 않기 때문에 그가 실제로 원했던 것에 대한 다른 해석이 있습니다. 나는''S10''가''S10'' 다음에''0''이 없으므로''S10XXXXXXXX''가 일치하지 않아야한다고 생각합니다. 만약 'S10'이 OP가 문자열 _ 뒤에 숫자 "0"을 나타내는 문자열이 아니라면 당신의 솔루션이 의도 한대로 작동한다는 것에 동의하지만 OP가 명확해질 때까지는 알 수 없습니다. – useR
, 하나는 일치에서 정규식을 방지하기 위해 filename
열을 활용할 수 있습니다 :
library(dplyr)
library(purrr)
df %>%
mutate(no_filename = map2_chr(filename, text, ~gsub(.x, '', .y))) %>%
filter(grepl("^0", no_filename)) %>%
select(-no_filename)
결과 :
filename text value
1 S2 S20XXXXX 0.2065314
2 S3 S30XXXXX 0.8146400
3 S4 S40XXXXX 0.8123895
4 S6 S60XXXXX 0.1111354
5 S7 S70XXXXX 0.1028646
6 S9 S90XXXXX 0.1306957
7 S9 S90XXXXX 0.3203732
8 S10 S100XXXXX 0.1876911
참고 :
S100XXXXX
이 일치하며, 하지만 S101XXXXX
데이터 :
library(dplyr)
df = data.frame(filename = rep(paste0('S', 1:10), each = 5))
set.seed(123)
df = df %>%
mutate(text = paste0(filename, sample(c(0:5), 50, replace = TRUE),
paste(rep('X', 5), collapse = "")),
value = runif(50))
아래의 코드 작업을 수행하고 그것이 내가 필요한 기본적이다.
resultado2[grep('0',resultado2$TextGridLabel),]
그러나, 나는 그런 TextGridLabel
에서 S10XXXXXXX
같은 데이터를 피하기 위해 싶습니다. 새 사진이 내가 생각하는 것을 더 잘 보여주기 위해 원래 게시물을 편집했습니다.
매트, SO! * 사용 가능한 * 데이터를 단지 이미지 대신 게시하는 경우 매우 유용합니다. 이것은 이미지를 포함 할 수 없다는 것을 의미하지는 않습니다 (예시적인 목적을 위해). 그러나 대표 샘플이 강조 표시, 복사, 붙여 넣기 및 재생할 때 우리가 좀 더 쉽게 사용할 수 있습니다. 둘째로, 당신의 묘사가 불분명하다; 문자열 뒤에 * "0"은 괜찮지 만 어떤 문자열입니까? 셋째, 무엇을 시도 했습니까? 이것은 정규 표현식에 가장 적합 할 수 있지만, 노력 수준을 나타내면 도움이됩니다. (이것은 write-my-code 서비스가 아닙니다.) 감사합니다! – r2evans
재현 가능한 질문을 만드는 방법에 대한 참고 자료 : https://stackoverflow.com/questions/5963269/how-to-make-a-great-r-reproducible-example 및 https://stackoverflow.com/help/ 맥브. – r2evans