我使用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)