R:更改类时对数据的更改

你刚读完

在运行randomForest模型之前,我加载我的数据并将变量分类为分类和数字,以便模型可以处理它。

首次从.csv文件加载的数据如下所示:

> str(DataFrame)
'data.frame':   1060 obs. of  6 variables:
 $ VarX   : int  1 1 1 1 0 0 0 0 1 0 ...
 $ Var1   : num  127 135 137 138 138 ...
 $ Var2   : Factor w/ 200 levels "#N/A","1690",..: 190 190 190 191 191 191 189 185 183 181 ...
 $ Var3   : Factor w/ 138 levels "#N/A","100","101",..: 44 43 43 43 43 43 43 43 43 42 ...
 $ Var4   : int  15 15 15 15 15 16 16 16 16 16 ...
 $ Var5   : Factor w/ 189 levels "#N/A","10029",..: 87 87 87 87 87 85 85 85 85 85 ...

> head(DataFrame, 3)
  VarX  Var1    Var2  Var3  Var4 Var5
1     1 126.58  3660  152   15   7159.5
2     1 135.17  3660  150   15   7159.5
3     1 137.25  3660  150   15   7159.5

然后我尝试按以下方式对变量进行排序:

##Sort numerical and categorical values
options(digits = 5)

cols <- c("VarX")
for (i in cols) {
DataFrame[,i] = as.factor(DataFrame[,i])
}

cols2 <- c("Var1", "Var2", "Var3", "Var4", "Var5")
for (i in cols2) {
  DataFrame[,i] = as.numeric(DataFrame[,i])
}

然而,这对数据做了一些奇怪和不受欢迎的事情:

> str(DataFrame)
 'data.frame':  1060 obs. of  6 variables:
$ VarX   : Factor w/ 2 levels "0","1": 2 2 2 2 1 1 1 1 2 1 ...
$ Var1   : num  127 135 137 138 138 ...
$ Var2   : num  190 190 190 191 191 191 189 185 183 181 ...
$ Var3   : num  44 43 43 43 43 43 43 43 43 42 ...
$ Var4   : num  15 15 15 15 15 16 16 16 16 16 ...
$ Var5   : num  87 87 87 87 87 85 85 85 85 85 ...

> head(DataFrame,3)
  VarX  Var1    Var2  Var3  Var4   Var5
1     1 126.58   190   44   15      87
2     1 135.17   190   43   15      87
3     1 137.25   190   43   15      87

此外,虽然在上面的摘录中没有显示,但它会将所有NA值转换为1,这取决于数据,可能会扭曲结果。

问:处理数据的正确方法是什么,以便不会损坏数据,同时确保randomForest可以使用它

库马尔

您应该已经as.numeric(as.character(variable_name))将因子列转换为数字列,否则信息将丢失。

如果你看到 ?factor 的文档,它在警告部分说:

因子的解释取决于代码和“级别”属性。注意仅比较具有相同水平集(以相同顺序)的因子。特别是,将 as.numeric 应用于因子是没有意义的,并且可能通过隐式强制发生。要将因子 f 转换为近似其原始数值,建议使用 as.numeric(levels(f))[f] 并且比 as.numeric(as.character(f)) 稍微更有效。

除了 for 循环,您还可以使用 sapply 的强大功能将这些列转换为数字,如下所示:

dfnew <- sapply(df[,colms_to_be_converted],function(x)as.numeric(as.character(x)))

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

检测对数据框的所有更改

来自分类Dev

如何触发对数据更改的响应渲染

来自分类Dev

mobx:更改数据时的类方法调用

来自分类Dev

按范围对数据进行分组时如何更改bin大小?

来自分类Dev

R使用数据框时更改数据值

来自分类Dev

使用R和tidyverse中的代码对数据进行编码并更改其他列中的列名

来自分类Dev

检查数据属性并更改类

来自分类Dev

遍历for循环时保留对R数据帧的更改

来自分类Dev

已成功提交对数据库的更改,但是在更新对象时发生了错误-已修订

来自分类Dev

数据抓取时更改代理

来自分类Dev

更新时更改数据

来自分类Dev

数据抓取时更改代理

来自分类Dev

如何使用RxJS对数据更改“做出反应”?

来自分类Dev

如何处理流星/蒙哥对数据库的更改?

来自分类Dev

我如何跟踪对数据库表的任何更改

来自分类Dev

Angular Chartjs如何使其对数据更改有反应?

来自分类Dev

for循环后未对数据框进行任何更改

来自分类Dev

如何处理流星/蒙哥对数据库的更改?

来自分类Dev

我如何跟踪对数据库表的任何更改

来自分类Dev

如何从gdf检索对数据框编辑的更改

来自分类Dev

如何更改此脚本对数据进行分组的方向?

来自分类Dev

更改父类时更改子代的css属性

来自分类Dev

更改引用类对象的对象时,它们的列表不会更改

来自分类Dev

在Bootstrap Carousel上更改活动类时更改背景

来自分类Dev

在其他类中更改int时更改颜色

来自分类Dev

创建WCF代理时更改类名称

来自分类Dev

悬停HTML元素时更改CSS类

来自分类Dev

悬停HTML元素时更改CSS类

来自分类Dev

悬停HTML元素时更改CSS类