developer tip

큰 데이터 프레임에 인덱스 (숫자 ID) 열 추가

optionbox 2020. 11. 19. 08:07
반응형

큰 데이터 프레임에 인덱스 (숫자 ID) 열 추가


이 질문에 이미 답변이 있습니다.

데이터 프레임에 큰 CSV 파일을 읽었습니다. csv 파일의 데이터는 사용자 정보를 나타내는 여러 웹 사이트에서 가져온 것입니다. 예를 들어 다음은 데이터 프레임의 구조입니다.

user_id, number_of_logins, number_of_images, web
001, 34, 3, aa.com
002, 4, 4, aa.com
034, 3, 3, aa.com
001, 12, 4, bb.com
002, 1, 3, bb.com
034, 2, 2, cc.com

데이터를 데이터 프레임으로 가져 오면 알 수 있듯이 user_id는 더 이상 고유 한 ID가 아니므로 모든 분석이 수행됩니다. 나는 이전에 다른 열을 추가하려고 시도하고 user_id있는데 그 열로 채워질 "generated_uid"의 인덱스를 거의 사용합니다 data.frame. 이것을 달성하는 가장 좋은 방법은 무엇입니까?


다음을 사용하여 숫자 시퀀스를 매우 쉽게 추가 할 수 있습니다.

data$ID <- seq.int(nrow(data))

물론 실제 의미가 없으므로 분석에 사용되지 않을 수도 있습니다.

이미을 사용중인 library(tidyverse)경우 다음을 사용할 수 있습니다.

data <- tibble::rowid_to_column(data, "ID")

대체 dplyr 패키지 사용 :

library("dplyr") # or library("tidyverse")

df <- df %>% mutate(id = row_number())

당신이 경우 data.frame이다 data.table, 당신은 특별한 기호를 사용할 수 있습니다 .I:

data[, ID := .I]

글쎄, 내가 당신을 올바르게 이해한다면. 다음과 같이 할 수 있습니다.

그것을 보여주기 위해 먼저 data.frame귀하의 예제로

df <- 
scan(what = character(), sep = ",", text =
"001, 34, 3, aa.com
002, 4, 4, aa.com
034, 3, 3, aa.com
001, 12, 4, bb.com
002, 1, 3, bb.com
034, 2, 2, cc.com")

df <- as.data.frame(matrix(df, 6, 4, byrow = TRUE))
colnames(df) <- c("user_id", "number_of_logins", "number_of_images", "web")  

그런 다음 다음 행 중 하나를 실행 data.frame하여 생성 된 사용자 ID로 행 번호가 있는 열 (의 끝에)을 추가 할 수 있습니다. 두 번째 줄은 단순히 선행 0을 추가합니다.

df$generated_uid  <- 1:nrow(df)
df$generated_uid2 <- sprintf("%03d", 1:nrow(df))

생성 된 사용자 ID가 첫 번째 열이되도록하려면 다음과 같이 열을 추가 할 수 있습니다.

df <- cbind("generated_uid3" = sprintf("%03d", 1:nrow(df)), df)

또는 단순히 열을 재정비하십시오.

참고 URL : https://stackoverflow.com/questions/23518605/add-an-index-numeric-id-column-to-large-data-frame

반응형