몇 달 전에 원래 입력 데이터로 작업 한 하위 명령문이 생겼습니다. 그 이후로 나는 추악한 과정을 다시 검사하도록 일하는 것을 멈췄습니다. 나는 그것을 공유하고 싫어하지만, 한 번에 여러 가지 일을 수행 :'sub'로 대체하거나 일치하지 않음
active$id[grep("CIR",active$description)] <- sub(".*CIR0*(\\d+).*","\\1",active$description[grep("CIR",active$description)],perl=TRUE)
이 문장은 설명 열에 포함 된 ID를 가지고 행을 찾아 새로운 id 컬럼을 만들었습니다. 하위 명령문은 "CIR0"다음에 오는 번호를 찾고 행 설명 내에 ID가있는 경우 id 열을 채 웁니다. 할당의 어느 한쪽을 부분 집합하는 임베디드 grep로 비효율적이라는 것을 알고 있습니다.
패턴이 일치하지 않으면 '하위'대체 값을 없거나 비워 둘 수있는 방법이 있습니까? 매우을 놓치고있는 것처럼 느껴지지만 커뮤니티의 도움을 요청하십시오. 고맙습니다. 당신이이 있는지 즉,
active$id[grep("CIR",active$description)] <- ifelse(match, replacement, "")
match
이 true로 평가해야하는 위치, ifelse()
사용하여 시도 할 수
| name | id | description |
|------+-----+-------------------|
| a | 343 | Here is CIR00343 |
| b | | Didn't have it |
| c | 123 | What is CIR|
| d | | CIR lacks a digit |
| e | 452 | CIR452 is next |
일부 샘플 데이터를 출력하면 좋을 것입니다. 그렇게하면 필요한 것을 확인할 수 있습니다. – nograpes
나는 샘플 데이터가 더 혼란스러워 할지도 모르지만 당신이 옳다는 것에 대한 질문이 일반화되었다고 스스로 확신했다. 나는 짧은 표를 추가했다. – jed