Bir veri çerçevesindeki her sütunun hangi sınıfta olduğunu bulmanın kolay bir yolu nedir?
Bir veri çerçevesindeki her sütunun hangi sınıfta olduğunu bulmanın kolay bir yolu nedir?
Yanıtlar:
Seçeneklerden biri kullanmaktır lapplyve class. Örneğin:
> foo <- data.frame(c("a", "b"), c(1, 2))
> names(foo) <- c("SomeFactor", "SomeNumeric")
> lapply(foo, class)
$SomeFactor
[1] "factor"
$SomeNumeric
[1] "numeric"
Diğer bir seçenek ise str:
> str(foo)
'data.frame': 2 obs. of 2 variables:
$ SomeFactor : Factor w/ 2 levels "a","b": 1 2
$ SomeNumeric: num 1 2
unlist(lapply(foo, class))çok sayıda sütunlu veri çerçeveleri için kullanışlıdır.
unlistile lapplyberbat bir fikir çünkü length(class(x))>1 (yukarıdaki yorumlara bakınız) - sapplyçok daha güvenli unlist + lapply. güvenli bir yolsapply(lapply(foo, class), "[", 1)
Sen basit yapmak kullanımını can lapplyveya sapplyfonksiyonları yerleşik.
lapplysize bir list- dönecek
lapply(dataframe,class)
while sapply, ex olası en iyi dönüş türünü alacaktır. Vektör vb -
sapply(dataframe,class)
Her iki komut da size tüm sütun adlarını ilgili sınıflarıyla birlikte döndürür.
Merhaba aynısını arıyordu ve o da olabilirdi
unlist(lapply(mtcars,class))
Yukarıdaki harika cevaplardan daha kompakt bir çıktı istedim lapply, bu yüzden burada küçük bir fonksiyon olarak sarılmış bir alternatif var.
# Example data
df <-
data.frame(
w = seq.int(10),
x = LETTERS[seq.int(10)],
y = factor(letters[seq.int(10)]),
z = seq(
as.POSIXct('2020-01-01'),
as.POSIXct('2020-10-01'),
length.out = 10
)
)
# Function returning compact column classes
col_classes <- function(df) {
t(as.data.frame(lapply(df, function(x) paste(class(x), collapse = ','))))
}
# Return example data's column classes
col_classes(df)
[,1]
w "integer"
x "character"
y "factor"
z "POSIXct,POSIXt"
classgetiri bir karakter vektör tüm bir nesne devralır gelen sınıflar, çıkışısapply(foo, class)bir liste olabilir ve her zaman çoğu insan gibi bir karakter vektör beklenebilir. Bu biraz tehlikeli olabilir ... Benlapplyçok daha güvenli buluyorum .