stringAsFactors在数据框中的作用

时间:2018-11-22 10:10:14

标签: r dataframe

请查看R中的这两个数据帧。

当我运行此代码时,尽管emp.data1和emp.data2都相同,但其中一个的stringsAsFactors为TRUE,而另一个为FALSE。那么stringAsFactors在数据帧中的作用是什么?

# Create the data frame.
emp.data1 <- data.frame(
   emp_id = c (1:5), 
   emp_name = c("Rick","Dan","Michelle","Ryan","Gary"),
   salary = c(623.3,515.2,611.0,729.0,843.25), 

   start_date = as.Date(c("2012-01-01", "2013-09-23", "2014-11-15", "2014-05-11",
      "2015-03-27")),
   stringsAsFactors = FALSE#Here stringsAsFactors is false
)
emp.data2 <- data.frame(
   emp_id = c (1:5), 
   emp_name = c("Rick","Dan","Michelle","Ryan","Gary"),
   salary = c(623.3,515.2,611.0,729.0,843.25), 

   start_date = as.Date(c("2012-01-01", "2013-09-23", "2014-11-15", "2014-05-11",
      "2015-03-27")),
   stringsAsFactors = TRUE#Here stringsAsFactors is true
)

2 个答案:

答案 0 :(得分:0)

Read the docs

stringsAsFactors通常会将出现在df中的所有字符串转换为一个因子变量,而不是将at保留为字符变量。在统计分析中,因子对于分类变量很有用。您想要拥有什么取决于您要对数据做什么。

答案 1 :(得分:0)

此设置更改字符串的数据类型。

sapply(emp.data1, class)
  emp_id    emp_name      salary  start_date 
"integer" "character"   "numeric"      "Date" 

sapply(emp.data2, class)
  emp_id   emp_name     salary start_date 
"integer"   "factor"  "numeric"     "Date" 

如您所见,关闭此选项后,emp_name的类别为factor

进行数据分析或可视化时使用因素。例如,在iris数据集中,它随R一起提供,我们可以查看花瓣长度和花瓣宽度的分布,同时使用颜色指示物种。

require(ggplot2)
sapply(iris,class)
ggplot(iris, aes(x=Petal.Length, y=Petal.Width, color=Species)) +
    geom_point()

将这些标记为一个因素,让R知道正在进行某种分组,并且R将自动确定正在进行的不同分组(或“级别”)。

显式因子标记使您可以与数据进行最佳交互。