根据计数过滤因子变量

时间:2018-05-25 14:43:05

标签: r regression

我有一个包含房价数据的数据框,包含价格和许多变量。其中一个变量是该属性的“子区域”,我试图将其纳入各种回归中。然而,它是一个因子变量,具有近3000个级别。

例如:

table(df$sub_area)

La Jolla    
2

Carlsbad
5 

Esconsido 
1

...等

我想过滤那些只有1个计数的地方,因为它们没有提供太多的预测能力,但却增加了大量的计算时间。但是,我想用空格或NA替换该属性的sub_area条目,因为我仍然想要使用该属性的其余信息,例如卧室,浴室等。

作为参考,单个属性条目可能如下所示:

ID Beds Baths City     Sub_area     sqm... etc   
1   4     2    San Diego   La Jolla   100....

然后我可以做

lm(价格〜床+浴室+城市+ sub_area)

在新的,较小的sub_area变量下,级别较低。

我想这样做是因为大多数预测价格能力都包含在我正在处理的地点的sub_area中。

3 个答案:

答案 0 :(得分:2)

一种方式:

areas <- names(which(table(df$Sub_area) > 10))
df$Sub_area[! df$Sub_area %in% areas] <- NA

答案 1 :(得分:2)

创建一个新的数据框,其中包含每个子区域的出现次数,并保留至少出现两次的子区域。

如果子区域未显示在已过滤的NA中,则将sub_area_count添加到原始数据框。

library(dplyr)

sub_area_count <- df %>% 
  count(sub_area) %>% 
  filter(n > 1)

boo <- !df$sub_area %in% sub_area_count$sub_area
df[boo, ]$sub_area <- NA

答案 2 :(得分:1)

您没有提供可重现的示例,但我认为这可用于识别那些计数== 1

的地方
count_1 <- as.data.frame(table(df$sub_area))
count_1 <- count_1$Var1[which(count_1$Freq==1)]