【发布时间】:2015-09-22 07:37:56
【问题描述】:
我是数据分析和学习 R 的新手。我有几个非常基本的问题,我不太清楚。我希望能在这里找到一些帮助。请多多包涵……还在学习中-
我编写了一个小函数来对包含 9 个变量的数据集执行基本的探索性分析,其中 8 个是 Int/Numeric 类型,1 个是 Factor。函数是这样的:
out <- function(x)
{
c <- class(x)
na.len <- length(which(is.na(x)))
m <- mean(x, na.rm = TRUE)
s <- sd(x, na.rm = TRUE)
uc <- m+3*s
lc <- m-3*s
return(c(classofvar = c, noofNA = na.len, mean=m, stdev=s, UpperCap = uc, LowerCap = lc))
}
然后我将它应用到数据集:
stats <- apply(train, 2, FUN = out)
但是输出文件的所有变量类都是 Character,所有 Means 都是 NA。经过一番头疼之后,我认为问题出在 Factor 变量上。我使用这个将它转换为数字:
train$MonthlyIncome=as.numeric(as.character(train$MonthlyIncome))
效果很好。但我很困惑,如果不查看数据集我使用上述函数 - 它不会工作。我该如何处理这种情况。
什么时候应该考虑创建虚拟变量?
提前谢谢你,希望问题不要太傻!
【问题讨论】:
-
试试
stats <- sapply(train, FUN = out)。apply将您的 data.frame 转换为矩阵,该矩阵只能保存一种数据类型。 -
你的第二个问题比较难回答。您需要虚拟变量进行建模,但大多数模型函数可以自动为您进行虚拟编码。
-
sapply有效,但因子变量给出了 NA,我想我需要先将其转换为数字。谢谢。 -
因子的标准差是多少?将一个因子强制为数字并从中计算 sd 有什么意义?
-
哎呀..我的错!实际上,我的数据集中的 MonthlyIncome 是一个因子变量——它不应该是。这就是为什么我说我需要先将其转换为数字类型。谢谢@Roland
标签: r dummy-variable