일부 열 값이 누락 된 데이터 프레임으로 목록을 변환하는 더 빠른 방법

안킷

이 목록이 있습니다

> head(train)
[[1]]
[[1]]$Physics
[1] 8

[[1]]$Chemistry
[1] 7

[[1]]$PhysicalEducation
[1] 3

[[1]]$English
[1] 4

[[1]]$Mathematics
[1] 6

[[1]]$serial
[1] 195490

.
.
[[6]]
[[6]]$Physics
[1] 2

[[6]]$Chemistry
[1] 1

[[6]]$Biology
[1] 2

[[6]]$English
[1] 4

[[6]]$Mathematics
[1] 8

[[6]]$serial
[1] 182318

각 하위 목록에는이 12 개 중 5 개 요소와 하나의 추가 이름이 있습니다. serial

columns <- c("Physics", "Chemistry", "PhysicalEducation", "English", 
             "Mathematics", "serial", "ComputerScience", "Hindi", "Biology", 
             "Economics", "Accountancy", "BusinessStudies")

이 목록을 데이터 프레임으로 변환하려고합니다.

현재는 한 번에 한 행씩 반복하여 for 루프를 사용하여이 작업을 수행하고 있습니다. 이것이 효과가 있지만 엄청난 시간이 걸립니다.

colclass <- rep("numeric",12)
comby <- read.table(text = '', colClasses = colclass, col.names = columns)  
for(i in 1:length(train)){
    comby[i,names(train[[i]])] <- train[[i]]
}

나는 사용해 do.call(rbind, train)보았지만 첫 번째 반복에서 이전 열에 새 데이터를 계속 추가하므로 작동하지 않습니다.

더 빠르고 더 나은 방법은 무엇입니까? 나는 약 150 만 개의 관찰을 가지고 있습니다.
원하는 o / p : 데이터 프레임에 모든 열이 있어야합니다. 나는 가치가없는 NA를 원한다. 또한 추가 패키지를 사용하지 않고 더 빨리 할 수 ​​있는지 관심이 있습니다.

 Physics Chemistry PhysicalEducation English Mathematics serial ComputerScience Hindi Biology Economics Accountancy
1       8         7                 3       4           6 195490              NA    NA      NA        NA          NA
2       1         1                 1       3           3 190869              NA    NA      NA        NA          NA
3       1         2                 2       1           2   3111              NA    NA      NA        NA          NA
4       8         7                 6       7           7  47738              NA    NA      NA        NA          NA
5       1         1                 1       3           2  85520              NA    NA      NA        NA          NA
6       2         1                NA       4           8 182318              NA    NA       2        NA          NA
  BusinessStudies
1              NA
2              NA
3              NA
4              NA
5              NA
6              NA

다음은 재현 가능한 코드입니다.

train <- [{\"Physics\":8,\"Chemistry\":7,\"PhysicalEducation\":3,\"English\":4,\"Mathematics\":6,\"serial\":195490},{\"Physics\":1,\"Chemistry\":1,\"PhysicalEducation\":1,\"English\":3,\"Mathematics\":3,\"serial\":190869},{\"Physics\":1,\"Chemistry\":2,\"PhysicalEducation\":2,\"English\":1,\"Mathematics\":2,\"serial\":3111},{\"Physics\":8,\"Chemistry\":7,\"PhysicalEducation\":6,\"English\":7,\"Mathematics\":7,\"serial\":47738},{\"Physics\":1,\"Chemistry\":1,\"PhysicalEducation\":1,\"English\":3,\"Mathematics\":2,\"serial\":85520},{\"Physics\":2,\"Chemistry\":1,\"Biology\":2,\"English\":4,\"Mathematics\":8,\"serial\":182318},{\"Physics\":3,\"Chemistry\":4,\"PhysicalEducation\":5,\"English\":5,\"Mathematics\":8,\"serial\":77482},{\"Accountancy\":2,\"BusinessStudies\":5,\"Economics\":3,\"English\":6,\"Mathematics\":7,\"serial\":152940},{\"Physics\":5,\"Chemistry\":6,\"Biology\":7,\"English\":3,\"Mathematics\":8,\"serial\":132620}]
train <- rjson::fromJSON(train)
OmaymaS

시작점으로 다음과 같이 purrr :: map을 사용할 수 있습니다.

샘플 데이터 세트 :

x <- list(list(physics=8,
               Chemistry=7,
               PhysicalEducation=3,
               English=4,
               serial=195490),
          list(physics=2,
               Chemistry=1,
               Biology=2,
               English=4,
               Mathematics=8,
               serial=182318))

Sol.1 [루프를 피하기 위해 가장 짧음 ]

zzz <- sapply(columns, function(n) map_dbl(x,n,.null=NA) ) %>% 
        data.frame()

다음을 제공합니다.

> zzz
  Physics Chemistry PhysicalEducation English Mathematics serial ComputerScience Hindi Biology Economics
1      NA         7                 3       4          NA 195490              NA    NA      NA        NA
2      NA         1                NA       4           8 182318              NA    NA       2        NA
  Accountancy BusinessStudies
1          NA              NA
2          NA              NA

이것이 어떻게 작동하는지 이해하고 싶다면 아래에서 더 긴 솔루션을 확인할 수 있습니다.

Sol.2 [수동 할당]

-각 열의 값을 선택합니다.

z <- data.frame(
    serial = map_dbl(x,"serial",.null=NA),
    Biology = map_dbl(x,"Biology",.null=NA),
    Chemistry = map_dbl(x,"Chemistry",.null=NA)
        )

다음을 제공합니다.

> z
  serial Biology Chemistry
1 195490      NA         7
2 182318       2         1
>

Sol.3 [미리 정의 된 데이터 프레임 및 for 루프]

  • 고정 된 크기로 데이터 프레임 생성

    zz <- data.frame(matrix(NA, nrow = length(x), ncol = 12))

  • 이름을 부여하다

    names(zz) <- columns

  • 목록에서 값 할당

    for(i in 1:ncol(zz)){ zz[columns[i]] <- map_dbl(x,columns[i],.null=NA) }

다음을 제공합니다.

> zz
  Physics Chemistry PhysicalEducation English Mathematics serial ComputerScience Hindi Biology Economics
1      NA         7                 3       4          NA 195490              NA    NA      NA        NA
2      NA         1                NA       4           8 182318              NA    NA       2        NA
  Accountancy BusinessStudies
1          NA              NA
2          NA              NA

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

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

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

다른 열과 다른 데이터 프레임을 일치시키는 값을 기반으로 데이터 프레임의 누락 된 값 채우기

분류에서Dev

pandas 데이터 프레임에서 누락 된 쌍을 찾고 더미 값으로 채우는 방법

분류에서Dev

누락 된 값을 다른 데이터 프레임의 값으로 채우는 방법

분류에서Dev

배열로 저장된 데이터 프레임 값을 목록으로 변환하는 방법

분류에서Dev

R-누락 된 값이있는 데이터 프레임을 통해 열 방향으로 lm () 루프

분류에서Dev

열이 다른 데이터 프레임에서 누락되거나 알 수없는 값을 나타내는 인코딩 된 값으로 참조되는 Pandas 데이터 프레임에서 NaN 값을 제거하는 방법

분류에서Dev

Pandas 데이터 프레임의 목록 열을 단일 열로 확장하는 빠른 방법

분류에서Dev

R을 사용하여 다른 데이터 프레임 열의 값을 기반으로 데이터 프레임의 일부 값을 변경하는 방법

분류에서Dev

일치하지 않는 값을 유지하면서 다른 열과 다른 데이터 프레임을 일치시키는 값을 기반으로 데이터 프레임의 누락 된 값을 채 웁니다.

분류에서Dev

NULL 값이 포함 된 목록 목록을 데이터 프레임으로 변환하는 방법

분류에서Dev

.txt 파일의 문자열 목록을 데이터 프레임으로 변환하는 방법

분류에서Dev

배열 목록을 Spark 데이터 프레임으로 변환하는 방법

분류에서Dev

다른 데이터 프레임의 값을 기반으로 열의 누락 된 값 보간

분류에서Dev

Pandas 데이터 프레임 열을 문자열 값이 포함 된 목록으로 채우는 방법

분류에서Dev

다른 데이터 프레임으로 열의 누락 된 값 채우기

분류에서Dev

중첩 된 목록을 각 포함 된 목록이 별도의 열이되는 데이터 프레임으로 나누는 방법은 무엇입니까?

분류에서Dev

데이터 프레임 열 목록 값을 요소로 변환하는 방법

분류에서Dev

중첩 된 사전 목록에서 중첩 된 열로 팬더 데이터 프레임을 만드는 방법

분류에서Dev

열 이름과 일치하도록 다른 열의 값을 기반으로 누락 된 값을 대체하는 방법이 있습니까?

분류에서Dev

두 팬더 데이터 프레임 간의 부분 문자열 일치를 찾는 가장 빠른 방법

분류에서Dev

Python에서 panda 데이터 프레임에 누락 된 시계열 데이터 행을 추가하는 방법

분류에서Dev

다른 pandas 데이터 프레임에서 일치하는 열을 기반으로 pandas 열을 업데이트하는 가장 빠른 방법

분류에서Dev

목록 목록에서 데이터 프레임을 rbind하는 더 빠른 방법

분류에서Dev

Pyspark의 동일한 데이터 프레임에있는 다른 열의 정규식 값으로 데이터 프레임의 열을 필터링하는 방법

분류에서Dev

목록 목록을 데이터 프레임으로 변환하는 방법-동일하지 않은 목록

분류에서Dev

이 중첩 된 JSON을 열 형식으로 Pandas 데이터 프레임으로 변환하는 방법

분류에서Dev

다른 데이터 프레임에서 값이 누락 된 경우 한 데이터 프레임에서 행을 삭제하는 방법은 무엇입니까?

분류에서Dev

목록을 사용하여 팬더 데이터 프레임을 필터링하는 가장 빠른 방법

분류에서Dev

특정 열 범위에 누락 된 값이있는 경우 데이터 프레임의 열 값을 업데이트하는 방법은 무엇입니까?

Related 관련 기사

  1. 1

    다른 열과 다른 데이터 프레임을 일치시키는 값을 기반으로 데이터 프레임의 누락 된 값 채우기

  2. 2

    pandas 데이터 프레임에서 누락 된 쌍을 찾고 더미 값으로 채우는 방법

  3. 3

    누락 된 값을 다른 데이터 프레임의 값으로 채우는 방법

  4. 4

    배열로 저장된 데이터 프레임 값을 목록으로 변환하는 방법

  5. 5

    R-누락 된 값이있는 데이터 프레임을 통해 열 방향으로 lm () 루프

  6. 6

    열이 다른 데이터 프레임에서 누락되거나 알 수없는 값을 나타내는 인코딩 된 값으로 참조되는 Pandas 데이터 프레임에서 NaN 값을 제거하는 방법

  7. 7

    Pandas 데이터 프레임의 목록 열을 단일 열로 확장하는 빠른 방법

  8. 8

    R을 사용하여 다른 데이터 프레임 열의 값을 기반으로 데이터 프레임의 일부 값을 변경하는 방법

  9. 9

    일치하지 않는 값을 유지하면서 다른 열과 다른 데이터 프레임을 일치시키는 값을 기반으로 데이터 프레임의 누락 된 값을 채 웁니다.

  10. 10

    NULL 값이 포함 된 목록 목록을 데이터 프레임으로 변환하는 방법

  11. 11

    .txt 파일의 문자열 목록을 데이터 프레임으로 변환하는 방법

  12. 12

    배열 목록을 Spark 데이터 프레임으로 변환하는 방법

  13. 13

    다른 데이터 프레임의 값을 기반으로 열의 누락 된 값 보간

  14. 14

    Pandas 데이터 프레임 열을 문자열 값이 포함 된 목록으로 채우는 방법

  15. 15

    다른 데이터 프레임으로 열의 누락 된 값 채우기

  16. 16

    중첩 된 목록을 각 포함 된 목록이 별도의 열이되는 데이터 프레임으로 나누는 방법은 무엇입니까?

  17. 17

    데이터 프레임 열 목록 값을 요소로 변환하는 방법

  18. 18

    중첩 된 사전 목록에서 중첩 된 열로 팬더 데이터 프레임을 만드는 방법

  19. 19

    열 이름과 일치하도록 다른 열의 값을 기반으로 누락 된 값을 대체하는 방법이 있습니까?

  20. 20

    두 팬더 데이터 프레임 간의 부분 문자열 일치를 찾는 가장 빠른 방법

  21. 21

    Python에서 panda 데이터 프레임에 누락 된 시계열 데이터 행을 추가하는 방법

  22. 22

    다른 pandas 데이터 프레임에서 일치하는 열을 기반으로 pandas 열을 업데이트하는 가장 빠른 방법

  23. 23

    목록 목록에서 데이터 프레임을 rbind하는 더 빠른 방법

  24. 24

    Pyspark의 동일한 데이터 프레임에있는 다른 열의 정규식 값으로 데이터 프레임의 열을 필터링하는 방법

  25. 25

    목록 목록을 데이터 프레임으로 변환하는 방법-동일하지 않은 목록

  26. 26

    이 중첩 된 JSON을 열 형식으로 Pandas 데이터 프레임으로 변환하는 방법

  27. 27

    다른 데이터 프레임에서 값이 누락 된 경우 한 데이터 프레임에서 행을 삭제하는 방법은 무엇입니까?

  28. 28

    목록을 사용하여 팬더 데이터 프레임을 필터링하는 가장 빠른 방법

  29. 29

    특정 열 범위에 누락 된 값이있는 경우 데이터 프레임의 열 값을 업데이트하는 방법은 무엇입니까?

뜨겁다태그

보관