Я использую R и загружал данные в фреймворк с помощью read.csv()
. Как определить тип данных для каждого столбца в кадре данных?
Определение типов данных столбцов фрейма данных
Ответ 1
Лучше всего начать использовать ?str()
. Чтобы изучить некоторые примеры, сделайте несколько данных:
set.seed(3221) # this makes the example exactly reproducible
my.data <- data.frame(y=rnorm(5),
x1=c(1:5),
x2=c(TRUE, TRUE, FALSE, FALSE, FALSE),
X3=letters[1:5])
@Решение Wilmer E Henao H очень оптимизировано:
sapply(my.data, class)
y x1 x2 X3
"numeric" "integer" "logical" "factor"
Используя str()
, вы получите эту информацию плюс дополнительные положительные эффекты (такие как уровни ваших факторов и первые несколько значений каждой переменной):
str(my.data)
'data.frame': 5 obs. of 4 variables:
$ y : num 1.03 1.599 -0.818 0.872 -2.682
$ x1: int 1 2 3 4 5
$ x2: logi TRUE TRUE FALSE FALSE FALSE
$ X3: Factor w/ 5 levels "a","b","c","d",..: 1 2 3 4 5
Подход Gavin Simpson также оптимизирован, но предоставляет немного другую информацию, чем class()
:
sapply(my.data, typeof)
y x1 x2 X3
"double" "integer" "logical" "integer"
Для получения дополнительной информации о class
, typeof
и среднем дочернем элементе mode
см. этот отличный поток SO: Всестороннее исследование типов вещей в R. 'mode' и 'class' и 'typeof' недостаточны.
Ответ 2
sapply(yourdataframe, class)
Где yourdataframe - это имя используемого фрейма данных
Ответ 3
Я бы предложил
sapply(foo, typeof)
если вам нужны фактические типы векторов в кадре данных. class()
- это нечто вроде другого зверя.
Если вам не нужно получать эту информацию в виде вектора (т.е. вам не нужно делать что-то еще программно позже), просто используйте str(foo)
.
В обоих случаях foo
будет заменено именем вашего фрейма данных.
Ответ 4
Вот функция, которая является частью пакета helpRFunctions, который вернет список всех различных типов данных в ваших данных кадр, а также конкретные имена переменных, связанные с этим типом.
install.package('devtools') # Only needed if you dont have this installed.
library(devtools)
install_github('adam-m-mcelhinney/helpRFunctions')
library(helpRFunctions)
my.data <- data.frame(y=rnorm(5),
x1=c(1:5),
x2=c(TRUE, TRUE, FALSE, FALSE, FALSE),
X3=letters[1:5])
t <- list.df.var.types(my.data)
t$factor
t$integer
t$logical
t$numeric
Затем вы можете сделать что-то вроде var(my.data[t$numeric])
.
Надеюсь, что это будет полезно!
Ответ 5
Просто передайте свой фрейм данных в следующую функцию:
data_types <- function(frame) {
res <- lapply(frame, class)
res_frame <- data.frame(unlist(res))
barplot(table(res_frame), main="Data Types", col="steelblue", ylab="Number of Features")
}
чтобы создать график всех типов данных в вашем фрейме данных. Для набора данных iris мы получаем следующее:
Ответ 6
Поскольку это не было указано четко, я просто добавляю это:
Я искал способ создать таблицу, которая содержит количество вхождений всех типов данных.
Скажем, у нас есть data.frame
с двумя числовыми и одним логическим столбцом
dta <- data.frame(a = c(1,2,3),
b = c(4,5,6),
c = c(TRUE, FALSE, TRUE))
Вы можете суммировать количество столбцов каждого типа данных с помощью
table(unlist(lapply(dta, class)))
# logical numeric
# 1 2
Это очень удобно, если у вас много столбцов и вы хотите получить быстрый обзор.
Чтобы дать кредит: это решение было вдохновлено ответом @Cybernetic.