R 문자열에서 단어의 위치 반환

RUser

다음과 같은 데이터가 있습니다.

data <- data.frame(
  text = c(
    "PARACETAMOL/CODEINE",
    "PSEUDOEPH/PARACET/CODEINE",
    "PARACETAMOL/CODEINE/DOXYLAMINE",
    "CODEINE & ASPIRIN",
    "CODEINE/PARACETAMOL",
    "TEST"
  ),
  stringsAsFactors = F
)

각 경우에 CODEINE이 발생하는 위치, 즉

text                             position
PARACETAMOL/CODEINE                     2
PSEUDOEPH/PARACET/CODEINE               3
PARACETAMOL/CODEINE/DOXYLAMINE          2
CODEINE & ASPIRIN                       1
CODEINE/PARACETAMOL                     1
TEST                                    0

수백 개의 행을 실행하는 DPLYR 솔루션을 선호합니다.

나는 다양한 다른 Stackoverflow 답변을 보았지만 작동하지 않는 것 같습니다. 그들은 대부분 단어 색인을 다루고 다른 단어와 관련된 위치가 아닙니다. 토큰 화 한 다음 깔끔한 텍스트와 같은 것으로 위치를 계산하는 것이 아이디어이지만 더 쉬운 방법이있을 수 있다고 생각합니다. 나는 그것이 멋진 REGEX라고 생각합니다.

업데이트 됨

CODEINE 기반이 아닌 요소를 추가하는 것을 무시하고 둘 다 오류에 답합니다.

어떤 도움이라도 대단히 감사하겠습니다.

로낙 샤

이를 달성하는 데 도움이되는 직접적인 정규식 솔루션이있을 수 있습니다. 다음은 문자열을 다른 단어로 분할하고 "CODEINE"발생 하는 단어 수를 세는 방법 입니다.

library(dplyr)

data %>%
  mutate(text1 = stringr::str_extract_all(text, "\\w+"), 
         position = purrr::map_int(text1, 
                     ~max(which(.x == "CODEINE")[1], 0L, na.rm = TRUE))) %>%
  select(-text1)

#                            text position
#1            PARACETAMOL/CODEINE        2
#2      PSEUDOEPH/PARACET/CODEINE        3
#3 PARACETAMOL/CODEINE/DOXYLAMINE        2
#4              CODEINE & ASPIRIN        1
#5            CODEINE/PARACETAMOL        1
#6                           TEST        0

기본 R에서 동일한 논리를 사용하면 다음과 같이 수행 할 수 있습니다.

sapply(strsplit(data$text, "/|\\&"), function(x) 
         max(which(trimws(x) == "CODEINE")[1], 0, na.rm = TRUE))
#[1] 2 3 2 1 1 0

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

스위치의 문자열 이름에서 동등한 객체 반환

분류에서Dev

R에서 하위 문자열 위치의 조건부 이동

분류에서Dev

줄에서 단어의 위치를 반환하는 방법, C 언어

분류에서Dev

Pandas Dataframe의 문자열에서 첫 번째 숫자 / 문자의 인덱스 / 위치를 반환합니다.

분류에서Dev

R에서 문자 위치의 숫자에 기반한 변수 이름

분류에서Dev

cypher에서 연결된 노드 목록과 문자열의 위치를 어떻게 반환합니까?

분류에서Dev

배열에서 숫자의 위치 반환

분류에서Dev

문자열 내에서 하위 문자열을 검색하고 다음 단어를 반환합니다.

분류에서Dev

문자열 내에서 하위 문자열을 검색하고 다음 단어를 반환합니다.

분류에서Dev

R의 문자열에서 모든 k 번째 위치에 문자 삽입

분류에서Dev

문자열에서 단어의 위치를 찾습니다

분류에서Dev

문자열에서 단어의 위치 검색

분류에서Dev

문자열에서 단어의 위치 찾기

분류에서Dev

r의 문자열에서 패턴의 겹치는 위치 가져 오기

분류에서Dev

위치에 따라 문자열에서 문자의 단어 얻기

분류에서Dev

하위 문자열을 포함하는 사전에 대해 목록의 하위 문자열에서 일치하는 값을 반환합니다.

분류에서Dev

문자열에서 문자의 모든 위치를 검색하고 쉼표로 구분 된 문자열로 반환

분류에서Dev

단락에서 링크의 색인 위치 반환

분류에서Dev

Excel 범위의 문자열에서 문자열 찾기 해당 열의 데이터 반환

분류에서Dev

단위 대신 문자열 반환

분류에서Dev

R에서 앞의 특정 단어와 뒤의 % 기호를 기반으로 문자열 또는 값 추출

분류에서Dev

문자열 내에서 단어의 위치를 어떻게 바꾸나요?

분류에서Dev

단어 앞의 문자열에서 문자 제거 (R)

분류에서Dev

R의 문자열 비교에서 상위 일치 항목 추출

분류에서Dev

문자열에서 단어 위치 (문자 위치 아님)를 찾는 방법

분류에서Dev

정의 된 배열 요소의 하위 문자열로 정의 된 범위에서 하위 배열 반환

분류에서Dev

R의 문자열에서 단어 뒤의 숫자 제거

분류에서Dev

"간격"을 고려하여 문자열에서 문자의 위치를 변환합니다 (즉, 문자열에서 영숫자가 아닌 문자).

분류에서Dev

Batch에서 일치하는 부분 문자열의 줄 번호 반환

Related 관련 기사

  1. 1

    스위치의 문자열 이름에서 동등한 객체 반환

  2. 2

    R에서 하위 문자열 위치의 조건부 이동

  3. 3

    줄에서 단어의 위치를 반환하는 방법, C 언어

  4. 4

    Pandas Dataframe의 문자열에서 첫 번째 숫자 / 문자의 인덱스 / 위치를 반환합니다.

  5. 5

    R에서 문자 위치의 숫자에 기반한 변수 이름

  6. 6

    cypher에서 연결된 노드 목록과 문자열의 위치를 어떻게 반환합니까?

  7. 7

    배열에서 숫자의 위치 반환

  8. 8

    문자열 내에서 하위 문자열을 검색하고 다음 단어를 반환합니다.

  9. 9

    문자열 내에서 하위 문자열을 검색하고 다음 단어를 반환합니다.

  10. 10

    R의 문자열에서 모든 k 번째 위치에 문자 삽입

  11. 11

    문자열에서 단어의 위치를 찾습니다

  12. 12

    문자열에서 단어의 위치 검색

  13. 13

    문자열에서 단어의 위치 찾기

  14. 14

    r의 문자열에서 패턴의 겹치는 위치 가져 오기

  15. 15

    위치에 따라 문자열에서 문자의 단어 얻기

  16. 16

    하위 문자열을 포함하는 사전에 대해 목록의 하위 문자열에서 일치하는 값을 반환합니다.

  17. 17

    문자열에서 문자의 모든 위치를 검색하고 쉼표로 구분 된 문자열로 반환

  18. 18

    단락에서 링크의 색인 위치 반환

  19. 19

    Excel 범위의 문자열에서 문자열 찾기 해당 열의 데이터 반환

  20. 20

    단위 대신 문자열 반환

  21. 21

    R에서 앞의 특정 단어와 뒤의 % 기호를 기반으로 문자열 또는 값 추출

  22. 22

    문자열 내에서 단어의 위치를 어떻게 바꾸나요?

  23. 23

    단어 앞의 문자열에서 문자 제거 (R)

  24. 24

    R의 문자열 비교에서 상위 일치 항목 추출

  25. 25

    문자열에서 단어 위치 (문자 위치 아님)를 찾는 방법

  26. 26

    정의 된 배열 요소의 하위 문자열로 정의 된 범위에서 하위 배열 반환

  27. 27

    R의 문자열에서 단어 뒤의 숫자 제거

  28. 28

    "간격"을 고려하여 문자열에서 문자의 위치를 변환합니다 (즉, 문자열에서 영숫자가 아닌 문자).

  29. 29

    Batch에서 일치하는 부분 문자열의 줄 번호 반환

뜨겁다태그

보관