dplyr을 사용하여 문자가 반복 될 때까지 티블의 문자를 재귀 적으로 연결하는 방법

상호 투자자

문자가 반복 될 때까지 dplyr을 사용하여 이전 tibble 행의 문자를 연결하려고합니다. 문자가 반복되면 반복되는 문자를 사용하여 동일한 연결 프로세스를 다시 시작합니다. 다음은 소스 데이터 프레임 (df)의 실패한 문자 연결 시도 (df1)와 제안 된 연결 프로세스 (df2)의 원하는 결과를 보여주는 표현입니다.

내 시도에서 연결 프로세스는 bf를 만들 때 한 번만 발생하는 것으로 보입니다. 불행히도, 왜 그런지 잘 모르겠습니다. 나는 여전히 dplyr을 처음 접하기 때문에 매우 분명한 것을 놓친 것 같습니다. 또한이 문제를 해결하기위한 더 나은 접근법이 있다면 저의 지평과 지식을 넓힐 수있어서 기쁩니다.

library (tidyverse)

df <- tibble(id = c(1,2,3,4,5,6,7,8,9,10,11,12,13,14),
             cde =c("b","f","c","e","b","f","c","e","d","f","b","c","e","d"))

df
#> # A tibble: 14 x 2
#>       id cde  
#>    <dbl> <chr>
#>  1     1 b    
#>  2     2 f    
#>  3     3 c    
#>  4     4 e    
#>  5     5 b       
#>  6     6 f    
#>  7     7 c    
#>  8     8 e    
#>  9     9 d    
#> 10    10 f    
#> 11    11 b    
#> 12    12 c    
#> 13    13 e    
#> 14    14 d

df1 <- df %>% 
  mutate(cum_cde = "") %>% 
  mutate(cum_cde = if_else(id ==1,cde,cum_cde)) %>% 
  mutate(cum_cde = if_else(id > 1 & str_count(lag(cum_cde),(cde)) < 1,str_c(lag(cum_cde),cde,sep="",collapse=NULL),cde))

df1
#> # A tibble: 14 x 3
#>       id cde   cum_cde
#>    <dbl> <chr> <chr>  
#>  1     1 b     b      
#>  2     2 f     bf     
#>  3     3 c     c      
#>  4     4 e     e      
#>  5     5 b     b      
#>  6     6 f     f      
#>  7     7 c     c      
#>  8     8 e     e      
#>  9     9 d     d      
#> 10    10 f     f      
#> 11    11 b     b      
#> 12    12 c     c      
#> 13    13 e     e      
#> 14    14 d     d



df2 <- tibble(id = c(1,2,3,4,5,6,7,8,9,10,11,12,13,14),
             cde =c("b","f","c","e","b","f","c","e","d","f","b","c","e","d"),
             result = c("b","bf","bfc","bfce","b","bf","bfc","bfce","bfced","f","fb","fbc","fbce","fbced"))

df2
#> # A tibble: 14 x 3
#>       id cde   result
#>    <dbl> <chr> <chr> 
#>  1     1 b     b     
#>  2     2 f     bf    
#>  3     3 c     bfc   
#>  4     4 e     bfce  
#>  5     5 b     b     
#>  6     6 f     bf    
#>  7     7 c     bfc   
#>  8     8 e     bfce  
#>  9     9 d     bfced 
#> 10    10 f     f     
#> 11    11 b     fb    
#> 12    12 c     fbc   
#> 13    13 e     fbce  
#> 14    14 d     fbced


<sup>Created on 2019-12-23 by the [reprex package](https://reprex.tidyverse.org) (v0.3.0)</sup>
Akrun

for루프가 있는 옵션은 다음과 같습니다 .

library(stringr)
v1 <- character(nrow(df))
j <- 1
for(i in seq_len(nrow(df))) {
               v1[i] <- paste(df$cde[unique(j:i)], collapse="")
     if(str_count(v1[i], df$cde[i]) > 1) {
             v1[i] <- df$cde[i]
  j <- i
       }
   }

v1
#[1] "b"     "bf"    "bfc"   "bfce" 
#[5] "b"     "bf"    "bfc"   "bfce"  "bfced" 
#[10]"f"     "fb"    "fbc"   "fbce"  "fbced"

또는 사용 accumulate

library(purrr)
library(dplyr)
df %>%
   group_by(grp = cummax(str_count(accumulate(cde, str_c), cde))) %>% 
   mutate(result = accumulate(cde, str_c)) %>%
   ungroup %>% 
   select(-grp)
# A tibble: 14 x 3
#      id cde   result
#   <dbl> <chr> <chr> 
# 1     1 b     b     
# 2     2 f     bf    
# 3     3 c     bfc   
# 4     4 e     bfce  
# 5     5 b     b     
# 6     6 f     bf    
# 7     7 c     bfc   
# 8     8 e     bfce  
# 9     9 d     bfced 
#10    10 f     f     
#11    11 b     fb    
#12    12 c     fbc   
#13    13 e     fbce  
#14    14 d     fbced 

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

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

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

문자열을 반복적으로 출력하는 void 재귀 적 방법

분류에서Dev

PHP 및 ImageMagick을 사용하여 이미지의 크기를 재귀 적으로 조정하고 이름을 지정할 때 기존 파일 이름 및 확장자를 기반으로 새 파일을 작성하는 가장 좋은 방법

분류에서Dev

객체 배열을 재귀 적으로 반복하고 자바 스크립트를 사용하여 일치하는 ID의 색인을 찾고 반응하는 방법은 무엇입니까?

분류에서Dev

한 자릿수가 될 때까지 셀의 모든 자릿수를 반복적으로 합하는 방법은 무엇입니까?

분류에서Dev

재귀를 사용하여 문자열을 반환하는 방법?

분류에서Dev

문자열에서 연속적으로 증가하는 길이의 문자 조각을 반복하는 방법은 무엇입니까?

분류에서Dev

AWS Cloudformation-문자열 파라미터를 사용하여 동일한 문자열의 반복적 인 사용을 방지하는 방법

분류에서Dev

재귀 적 이분법 알고리즘을 사용하여 문자가 문자열에 있는지 확인

분류에서Dev

자바가 재귀를 사용하여 문자열을 반전시키는 방법

분류에서Dev

C 언어로 재귀를 사용하여 문자열을 뒤집는 방법

분류에서Dev

객체가 아닌 값을 문자열로 사용하여 유형을 재귀 적으로 복제

분류에서Dev

숫자의 소인수를 반복적으로 추가하고 반복 될 때까지 해당 숫자를 합계로 대체 한 최종 결과

분류에서Dev

반복 될 수있는 문자열 내의 문자를 효율적으로 바꾸는 방법

분류에서Dev

문자열 Java에 반복적으로 문자를 추가하는 방법

분류에서Dev

MongoDB : 조건을 사용하여 모든 자식 노드의 수를 재귀 적으로 얻는 방법은 무엇입니까?

분류에서Dev

키의 문자열로 사전을 재귀 적으로 그룹화하는 방법

분류에서Dev

재귀를 사용하여 문자 배열을 역순으로 인쇄하는 방법?

분류에서Dev

재귀를 사용하여 문자열의 반대를 반환합니까?

분류에서Dev

문자를 기반으로 정규식을 사용하여 값을 별도의 선택적 그룹으로 일치시키는 방법은 무엇입니까?

분류에서Dev

Spark-반복적 (또는 재귀 적) 함수 호출의 경우 지연 평가로 처리하는 방법

분류에서Dev

Express Nodejs 문자열의 본문 매개 변수가 Express-Validation 및 Joi를 사용하여 JSON으로 변환 될 수 있는지 확인하는 방법

분류에서Dev

JQuery .each () 반복을 재귀 적으로 호출하는 방법

분류에서Dev

정규식을 사용하여 순차적으로 반복되는 문자 방지

분류에서Dev

일치하는 문자열로 FolderNames 및 FileNames의 이름을 재귀 적으로 바꾸는 방법

분류에서Dev

CTE를 사용하여 부모-자식 계층을 재귀 적으로 확장하는 방법

분류에서Dev

연결이 종료 될 때 OpenConnect VPN을 자동으로 연결하는 방법은 무엇입니까?

분류에서Dev

jquery를 사용하여 문자열을 동적으로 추가하는 방법은 무엇입니까?

분류에서Dev

재귀를 사용하여 배열의 가능한 모든 조합을 반복하는 방법은 무엇입니까?

분류에서Dev

Javascript를 사용하여 문자열의 문자를 반복하는 방법은 무엇입니까?

Related 관련 기사

  1. 1

    문자열을 반복적으로 출력하는 void 재귀 적 방법

  2. 2

    PHP 및 ImageMagick을 사용하여 이미지의 크기를 재귀 적으로 조정하고 이름을 지정할 때 기존 파일 이름 및 확장자를 기반으로 새 파일을 작성하는 가장 좋은 방법

  3. 3

    객체 배열을 재귀 적으로 반복하고 자바 스크립트를 사용하여 일치하는 ID의 색인을 찾고 반응하는 방법은 무엇입니까?

  4. 4

    한 자릿수가 될 때까지 셀의 모든 자릿수를 반복적으로 합하는 방법은 무엇입니까?

  5. 5

    재귀를 사용하여 문자열을 반환하는 방법?

  6. 6

    문자열에서 연속적으로 증가하는 길이의 문자 조각을 반복하는 방법은 무엇입니까?

  7. 7

    AWS Cloudformation-문자열 파라미터를 사용하여 동일한 문자열의 반복적 인 사용을 방지하는 방법

  8. 8

    재귀 적 이분법 알고리즘을 사용하여 문자가 문자열에 있는지 확인

  9. 9

    자바가 재귀를 사용하여 문자열을 반전시키는 방법

  10. 10

    C 언어로 재귀를 사용하여 문자열을 뒤집는 방법

  11. 11

    객체가 아닌 값을 문자열로 사용하여 유형을 재귀 적으로 복제

  12. 12

    숫자의 소인수를 반복적으로 추가하고 반복 될 때까지 해당 숫자를 합계로 대체 한 최종 결과

  13. 13

    반복 될 수있는 문자열 내의 문자를 효율적으로 바꾸는 방법

  14. 14

    문자열 Java에 반복적으로 문자를 추가하는 방법

  15. 15

    MongoDB : 조건을 사용하여 모든 자식 노드의 수를 재귀 적으로 얻는 방법은 무엇입니까?

  16. 16

    키의 문자열로 사전을 재귀 적으로 그룹화하는 방법

  17. 17

    재귀를 사용하여 문자 배열을 역순으로 인쇄하는 방법?

  18. 18

    재귀를 사용하여 문자열의 반대를 반환합니까?

  19. 19

    문자를 기반으로 정규식을 사용하여 값을 별도의 선택적 그룹으로 일치시키는 방법은 무엇입니까?

  20. 20

    Spark-반복적 (또는 재귀 적) 함수 호출의 경우 지연 평가로 처리하는 방법

  21. 21

    Express Nodejs 문자열의 본문 매개 변수가 Express-Validation 및 Joi를 사용하여 JSON으로 변환 될 수 있는지 확인하는 방법

  22. 22

    JQuery .each () 반복을 재귀 적으로 호출하는 방법

  23. 23

    정규식을 사용하여 순차적으로 반복되는 문자 방지

  24. 24

    일치하는 문자열로 FolderNames 및 FileNames의 이름을 재귀 적으로 바꾸는 방법

  25. 25

    CTE를 사용하여 부모-자식 계층을 재귀 적으로 확장하는 방법

  26. 26

    연결이 종료 될 때 OpenConnect VPN을 자동으로 연결하는 방법은 무엇입니까?

  27. 27

    jquery를 사용하여 문자열을 동적으로 추가하는 방법은 무엇입니까?

  28. 28

    재귀를 사용하여 배열의 가능한 모든 조합을 반복하는 방법은 무엇입니까?

  29. 29

    Javascript를 사용하여 문자열의 문자를 반복하는 방법은 무엇입니까?

뜨겁다태그

보관