我使用R并使用read.csv()将数据加载到数据帧中。如何确定数据帧中每一列的数据类型?
当前回答
要获得一个带有类型和类的漂亮Tibble:
purrr::map2_df(mtcars,names(mtcars), ~ {
tibble(
field = .y,
type = typeof(.x),
class_1 = class(.x)[1],
class_2 = class(.x)[2]
)
})
其他回答
要获得一个带有类型和类的漂亮Tibble:
purrr::map2_df(mtcars,names(mtcars), ~ {
tibble(
field = .y,
type = typeof(.x),
class_1 = class(.x)[1],
class_2 = class(.x)[2]
)
})
简单地传递你的数据帧到下面的函数:
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")
}
生成数据帧中所有数据类型的图表。对于虹膜数据集,我们得到以下结果:
data_types(iris)
为了方便使用数据框架,这里有一个简单的base函数
col_classes <- function(df) {
data.frame(
variable = names(df),
class = unname(sapply(df, class))
)
}
col_classes(my.data)
variable class
1 y numeric
2 x1 integer
3 x2 logical
4 X3 character
我建议
sapply(foo, typeof)
如果你需要数据帧中向量的实际类型。Class()有点不同。
如果你不需要作为一个向量来获取这个信息(也就是说,你不需要它来做其他的编程),只需要使用str(foo)。
在这两种情况下,foo将被替换为数据帧的名称。
另一种选择是使用purrr包的map函数。
library(purrr)
map(df,class)