필터링 된 문자에서 데이터 프레임을 분할하고 여러 새 열을 만듭니다.

조나스

내 작업에서 매우 일반적인 데이터 전처리 문제가 있습니다. 나는 일반적으로 결국 큰 일치 작업을 수행하려는 두 개의 파일이 있습니다. 일반적으로 첫 번째 단계는 첫 번째 파일의 "정리 된"데이터 프레임을 만드는 2 단계 프로세스이고 두 번째 단계는 더 큰 데이터 프레임의 두 번째 파일과 일치 (vlookup)하는 것입니다. 이 질문의 첫 번째 단계에 도움이 필요합니다. 아래에서 작업 할 간단한 예제를 만들었습니다. 내 단순화 된 데이터 프레임 :

c1 <- 1:15
c2 <- c("Valuelabels", "V1", "1", "2", "Valuelabels", "V2", "1", "2", "3", "Valuelabels", "V3", "1", "2", "3", "4")
c3 <- c("", "", "Male", "Female", "", "", "Married", "Single", "Other", "", "", "SingleWithChildren", "SingleWithoutChildren","MarriedWithChildren", "PartneredWithChildren") 

df <- data.frame(row.names =c1,c2,c3)
df

            c2                    c3
1  Valuelabels                      
2           V1                      
3            1                  Male
4            2                Female
5  Valuelabels                      
6           V2                     
7            1               Married
8            2                Single
9            3                 Other
10 Valuelabels                      
11          V3                      
12           1    SingleWithChildren
13           2 SingleWithoutChildren
14           3   MarriedWithChildren
15           4 PartneredWithChildren

이제 첫 번째 열의 "Valuelabel"문자열에서 데이터 프레임을 분할하고 다음과 같은 새 데이터 프레임을 만들고 싶습니다.

   V1 V1_match V2 V2_match V3              V3_match
1:  1     Male  1  Married  1    SingleWithChildren
2:  2   Female  2   Single  2 SingleWithoutChildren
3: NA           3    Other  3   MarriedWithChildren
4: NA          NA           4 PartneredWithChildren

결국 V1을 열 이름으로 사용하고 그 아래에 일치하는 값을 내 예제에서 V1_match ...라는 이름 옆에 새 열로 데이터 프레임을 만들고 싶습니다.

이 데이터 프레임은 더 큰 데이터 프레임과 일치시키기 전에 1 단계를 마칩니다.

도움이 매우 좋습니다.

데이비드 아렌 부르크

가능한 data.table해결책 은 다음과 같습니다.

library(data.table) # v 1.9.5
setDT(df)[, indx := c2[2L], by = cumsum(c2 == "Valuelabels")]
df2 <- df[!grepl("\\D", c2)][, indx2 := seq_len(.N), by = indx]
dcast(df2, indx2 ~ indx, value.var = c("c2", "c3"))
#    indx2 V1_c2 V2_c2 V3_c2  V1_c3   V2_c3                 V3_c3
# 1:     1     1     1     1   Male Married    SingleWithChildren
# 2:     2     2     2     2 Female  Single SingleWithoutChildren
# 3:     3    NA     3     3     NA   Other   MarriedWithChildren
# 4:     4    NA    NA     4     NA      NA PartneredWithChildren

data.table다음을 사용하여 실행 하려면 v> 1.9.5 를 설치해야합니다.

library(devtools)
install_github("Rdatatable/data.table", build_vignettes = FALSE)

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

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

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

Python 정규식을 사용하여 문자열 열을 분할하여 Python에서 데이터 프레임의 새 열을 만듭니다.

분류에서Dev

여러 열에서 더미 변수를 만들고 새 데이터 프레임을 만듭니다.

분류에서Dev

다른 프레임을 부분 화하고 접미사를 추가하여 루프에서 여러 새 데이터 프레임을 만듭니다.

분류에서Dev

팬더를 사용하여 두 열을 정렬하고 데이터 프레임에서 정렬 된 값에 대한 새 열을 만듭니다.

분류에서Dev

Python : 데이터 프레임에서 다른 열의 값으로 열에서 분리 된 문자열로 새 열을 만듭니다.

분류에서Dev

데이터 프레임 목록을 반복하여 새 열을 만듭니다.

분류에서Dev

다른 데이터 프레임의 행 번호를 사용하여 기존 데이터 프레임에서 새 pandas 데이터 프레임을 만듭니다.

분류에서Dev

여러 열에 기능 적용을 사용하여 다른 열의 값을 기반으로 데이터 프레임에 새 열을 만듭니다.

분류에서Dev

쉼표로 구분 된 열의 값을 다른 데이터 프레임을 기반으로하는 조회로 대체하여 새 열을 만듭니다.

분류에서Dev

R의 데이터 프레임 행에 Reduce 함수를 적용하여 새 열을 만듭니다.

분류에서Dev

Pandas에서 열을 분할하여 새 데이터 프레임 만들기

분류에서Dev

R 데이터 프레임은 across / all_of / mutate_if를 사용하여 기존 열에서 여러 개의 새 열을 만듭니다.

분류에서Dev

Pandas 데이터 프레임에서 하나의 열을 피벗하고 4 개의 새 열을 만듭니다.

분류에서Dev

Python은 하나의 열을 여러 열로 분할하고 분할 된 열을 원래 데이터 프레임에 다시 연결합니다.

분류에서Dev

데이터 프레임에서 지정된 조건으로 행을 필터링하고 새 데이터 프레임에 넣는 방법은 무엇입니까?

분류에서Dev

일치하는 두 데이터 프레임 인덱스에서 새 데이터 프레임을 만듭니다.

분류에서Dev

열에서 패턴을 추출하고 R 데이터 프레임에서 새 패턴을 만듭니다.

분류에서Dev

열의 숫자 (영)를 제거하고 데이터 프레임에 새 열을 만듭니다.

분류에서Dev

두 열의 합을 그룹화하고 팬더에서 새 데이터 프레임을 만듭니다.

분류에서Dev

Pandas 데이터 프레임에서 4 행당 첫 번째 값을 추출하여 새 데이터 프레임을 만듭니다.

분류에서Dev

r의 for 루프를 사용하여 다른 데이터 프레임의 행을 기반으로 여러 새 데이터 프레임을 만듭니다.

분류에서Dev

문자열 목록에 대해 여러 데이터 프레임을 반복하고 문자열이 포함 된 열을 검색하고 여러 새 파일을 만들려면 어떻게해야합니까?

분류에서Dev

Python Pandas 데이터 프레임은 다른 열에서 빼기를 포함하는 새 열을 만듭니다.

분류에서Dev

데이터 프레임을 분할하고 분할 된 부분을 새 열에 연결하는 방법은 무엇입니까?

분류에서Dev

데이터 프레임의 열에서 문자열을 추출하고 해당 문자열을 사용하여 새 열을 추가합니다.

분류에서Dev

Pandas에서 사용자 지정 집계 함수를 사용하여 데이터 프레임에 새 열을 만듭니다.

분류에서Dev

데이터 프레임을 필터링하고 새로 만든 열을 원본 df에 추가하십시오.

분류에서Dev

주어진 날짜 이후 2 년을 포함하는 데이터 프레임에 새 열을 만듭니다.

분류에서Dev

Pandas : 이전 데이터 프레임의 문자열에서 추출한 데이터에서 새 데이터 프레임을 만듭니다.

Related 관련 기사

  1. 1

    Python 정규식을 사용하여 문자열 열을 분할하여 Python에서 데이터 프레임의 새 열을 만듭니다.

  2. 2

    여러 열에서 더미 변수를 만들고 새 데이터 프레임을 만듭니다.

  3. 3

    다른 프레임을 부분 화하고 접미사를 추가하여 루프에서 여러 새 데이터 프레임을 만듭니다.

  4. 4

    팬더를 사용하여 두 열을 정렬하고 데이터 프레임에서 정렬 된 값에 대한 새 열을 만듭니다.

  5. 5

    Python : 데이터 프레임에서 다른 열의 값으로 열에서 분리 된 문자열로 새 열을 만듭니다.

  6. 6

    데이터 프레임 목록을 반복하여 새 열을 만듭니다.

  7. 7

    다른 데이터 프레임의 행 번호를 사용하여 기존 데이터 프레임에서 새 pandas 데이터 프레임을 만듭니다.

  8. 8

    여러 열에 기능 적용을 사용하여 다른 열의 값을 기반으로 데이터 프레임에 새 열을 만듭니다.

  9. 9

    쉼표로 구분 된 열의 값을 다른 데이터 프레임을 기반으로하는 조회로 대체하여 새 열을 만듭니다.

  10. 10

    R의 데이터 프레임 행에 Reduce 함수를 적용하여 새 열을 만듭니다.

  11. 11

    Pandas에서 열을 분할하여 새 데이터 프레임 만들기

  12. 12

    R 데이터 프레임은 across / all_of / mutate_if를 사용하여 기존 열에서 여러 개의 새 열을 만듭니다.

  13. 13

    Pandas 데이터 프레임에서 하나의 열을 피벗하고 4 개의 새 열을 만듭니다.

  14. 14

    Python은 하나의 열을 여러 열로 분할하고 분할 된 열을 원래 데이터 프레임에 다시 연결합니다.

  15. 15

    데이터 프레임에서 지정된 조건으로 행을 필터링하고 새 데이터 프레임에 넣는 방법은 무엇입니까?

  16. 16

    일치하는 두 데이터 프레임 인덱스에서 새 데이터 프레임을 만듭니다.

  17. 17

    열에서 패턴을 추출하고 R 데이터 프레임에서 새 패턴을 만듭니다.

  18. 18

    열의 숫자 (영)를 제거하고 데이터 프레임에 새 열을 만듭니다.

  19. 19

    두 열의 합을 그룹화하고 팬더에서 새 데이터 프레임을 만듭니다.

  20. 20

    Pandas 데이터 프레임에서 4 행당 첫 번째 값을 추출하여 새 데이터 프레임을 만듭니다.

  21. 21

    r의 for 루프를 사용하여 다른 데이터 프레임의 행을 기반으로 여러 새 데이터 프레임을 만듭니다.

  22. 22

    문자열 목록에 대해 여러 데이터 프레임을 반복하고 문자열이 포함 된 열을 검색하고 여러 새 파일을 만들려면 어떻게해야합니까?

  23. 23

    Python Pandas 데이터 프레임은 다른 열에서 빼기를 포함하는 새 열을 만듭니다.

  24. 24

    데이터 프레임을 분할하고 분할 된 부분을 새 열에 연결하는 방법은 무엇입니까?

  25. 25

    데이터 프레임의 열에서 문자열을 추출하고 해당 문자열을 사용하여 새 열을 추가합니다.

  26. 26

    Pandas에서 사용자 지정 집계 함수를 사용하여 데이터 프레임에 새 열을 만듭니다.

  27. 27

    데이터 프레임을 필터링하고 새로 만든 열을 원본 df에 추가하십시오.

  28. 28

    주어진 날짜 이후 2 년을 포함하는 데이터 프레임에 새 열을 만듭니다.

  29. 29

    Pandas : 이전 데이터 프레임의 문자열에서 추출한 데이터에서 새 데이터 프레임을 만듭니다.

뜨겁다태그

보관