Soru Büyük veri çerçevesine bir dizin (sayısal kimlik) sütunu ekleyin [çoğaltın]


Bu sorunun zaten bir cevabı var:

Veri çerçevesine büyük bir csv dosyası okudum. Csv dosyasındaki veriler, kullanıcı bilgilerini temsil eden birden çok web sitesindedir. Örneğin, veri çerçevesinin yapısı burada.

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

Verileri veri çerçevesine getirdiğimde görebildiğiniz gibi, user_id artık benzersiz bir kimlik değildir ve bu da tüm analizlere neden olur. Öncesinde başka sütun eklemeyi deniyorum user_id böyle bir şey "generated_uid" ve hemen hemen data.frame o sütunu doldurmak için. Bunu başarmanın en iyi yolu nedir.


44
2018-05-07 13:02


Menşei


Basit bir yaklaşım, artan sayılarla yeni sütun eklemektir: data.frame$generated_uid <- 1:nrow(data.frame) - Christian Borck


Cevaplar:


Bir dizi diziyi çok kolay bir şekilde ekleyebilirsiniz.

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

Tabi ki gerçek bir anlamı olmayacak, dolayısıyla analizde kullanılmayabilir.

Eğer zaten kullanıyorsanız library(tidyverse), kullanabilirsiniz

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

95
2018-05-07 13:08





Alternatif kullanma dplyr paketi:

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

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

12
2018-03-20 09:24





Şey, seni doğru anlarsam. Aşağıdaki gibi bir şey yapabilirsiniz.

Bunu göstermek için önce bir data.frame örneğinizle

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")  

Sonra bir sütun eklemek için aşağıdaki satırlardan birini çalıştırabilirsiniz (sonunda data.frame) oluşturulan kullanıcı kimliği ile satır numarası. İkinci satırlar sadece baştaki sıfırları ekler.

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

Oluşturulan kullanıcı kimliğinin ilk sütun olmasını kesinlikle istiyorsanız, sütunu şu şekilde ekleyebilirsiniz:

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

veya sütunları basitçe yeniden.


5
2018-05-07 13:21





Eğer senin data.frame bir data.tableözel sembol kullanabilirsiniz .I:

data[, ID := .I]

4
2018-03-20 10:27