在R中建模之前的自动清洁功能

时间:2014-09-27 03:00:20

标签: r statistics modeling

也许这是一个愚蠢的问题,但我是SAS的新转换者,我仍然在想办法。在运行模型之前清理数据集的最简单方法是什么。例如:我有一个包含100个变量的数据集。如何在运行模型之前删除少于2个级别的字符/因子变量?这似乎是在SAS中动态发生的,我发现在建模之前手动删除R中的变量很痛苦。当然应该有更好的方法。提前谢谢。

1 个答案:

答案 0 :(得分:3)

您可以尝试:(修改@Richard Scriven不回答)

indx <- sapply(dat, function(x) length(levels(x))<2 & is.factor(x))
dat1 <- dat[,!indx]
head(dat1)
#       Col1 Col3
#1  1.3709584    B
#2 -0.5646982    B
#3  0.3631284    B
#4  0.6328626    D
#5  0.4042683    A
#6 -0.1061245    D

如果您同时拥有characterfactor列,并希望删除<2唯一levels/values

列的列
dat$Col4 <- as.character(dat$Col4)

如果我尝试上面的代码,我会得到(这是错误的):

 head(dat[,!indx],2)
 #        Col1 Col3 Col4
 #1  1.3709584    B  Yes
 #2 -0.5646982    B  Yes

在这里,您可以这样做:

indx1 <- sapply(dat, function(x) !is.numeric(x) & length(unique(x))<2)
head(dat[,!indx1])
  #       Col1 Col3
  #1  1.3709584    B
  #2 -0.5646982    B
  #3  0.3631284    B
  #4  0.6328626    D
  #5  0.4042683    A
  #6 -0.1061245    D

数据

set.seed(42)
 dat <- data.frame(Col1=rnorm(25), Col2=LETTERS[1], 
     Col3=sample(LETTERS[1:5], 25, replace=TRUE), Col4="Yes")