r - R如何知道来自给定数据帧的什么样的数据被视为一个因素?
问题描述
考虑到来自 Kaggle ( https://www.kaggle.com/c/titanic/data ) 上可用的泰坦尼克号数据集的给定数据,我试图找出 R 上每个列的数据类型。它返回乘客姓名、性别和票号的因子数据类型。它返回年龄的数字数据类型。为什么它不将年龄列表视为整数甚至因子?年龄确实在数据集中重复。他们不能认为是不同的层次吗?
我使用该str()
函数返回 R 中的数据类型。
str(test.survived)
$ Age : num 34.5 47 62 27 22 14 30 26 18 21 ...
$ Ticket : Factor w/ 363 levels "110469","110489",..: 153 222 74 148 139 262 159 85 101 270 ...
.
str(test.survived)
输出:
'data.frame': 418 obs. of 12 variables:
$ survived : Factor w/ 1 level "None": 1 1 1 1 1 1 1 1 1 1 ...
$ PassengerId: int 892 893 894 895 896 897 898 899 900 901 ...
$ Pclass : int 3 3 2 3 3 3 3 2 3 3 ...
$ Name : Factor w/ 418 levels "Abbott, Master. Eugene Joseph",..: 210
409 273 414 182 370 85 58 5 104 ...
$ Sex : Factor w/ 2 levels "female","male": 2 1 2 2 1 2 1 2 1 2 ...
$ Age : num 34.5 47 62 27 22 14 30 26 18 21 ...
$ SibSp : int 0 1 0 0 1 0 0 1 0 2 ...
$ Parch : int 0 0 0 0 1 0 0 1 0 0 ...
$ Ticket : Factor w/ 363 levels "110469","110489",..: 153 222 74 148 139
262 159 85 101 270 ...
$ Fare : num 7.83 7 9.69 8.66 12.29 ...
$ Cabin : Factor w/ 77 levels "","A11","A18",..: 1 1 1 1 1 1 1 1 1 1
...
$ Embarked : Factor w/ 3 levels "C","Q","S": 2 3 2 3 3 3 2 3 1 3 ...
据我了解,因子用于具有重复值的数据集,因此将它们分类为级别。就像票号,舱位类型一样,年龄也有重复。但是 R 并不认为年龄是一个因素,而是为其分配了一个数字数据类型。我知道它不能是整数类型,因为那里有一些浮动数据值。但为什么不考虑因素?
解决方案
读取数据的方式取决于您用来执行此操作的函数以及您指定的任何参数。
如果您使用类似的东西read.csv()
,那么它使用该函数type.convert()
来设置每列的数据类型。从笔记:
给定一个向量,该函数尝试将其转换为逻辑、整数、数字或复数,如果失败则将字符向量转换为因子,除非 as.is = TRUE。选择可以接受所有非缺失值的第一个类型。
该函数按顺序遍历类类型以计算出该列应该是什么。因此,仅当无法分配数字类别时才会使用因子类型。在本例中,它是一个数字列。
更多信息
通常,人们不希望将他们的字符列作为因素读入。为避免这种情况,stringsAsFactors = FALSE
请在读取 csv 时使用。
如果您希望您的数字列成为因素,那么您可以使用
test.survived$Age <- as.factor(test.survived$Age)
例如。
推荐阅读
- r - 基于组改变新列
- spring-boot - 弹簧数据 | 多对一 | 保存并刷新 | 非空属性引用空值或瞬态值 | 休眠
- c++11 - C++ boost 序列化错误:[boost::archive::archive_exception 类型的未捕获异常:输入流错误-没有这样的过程]
- powerbi - 是否有特定方法可以从 PowerBI 的列中有条件地创建平均值?
- python - 如何使用 Selenium 打开新标签并结合两部分的链接?
- python - Plotly:如何将日期索引添加到数据框列,以便我可以制作一个图表,我可以将日期用作“x”[Python]
- javascript - 取消选中角度中的复选框时单击事件
- ios - 如何使用 iOS 14 中的列表配置在 UICollectionView 中启用多项选择?
- javascript - 如何创建一个检查每个子字符串的递归函数?
- google-sheets - 两个选项卡之间的 Google 表格过滤器