R将子集视为因子变量而不是数值变量

时间:2014-11-16 01:02:07

标签: r subset negation

在一个复杂的数据框架中,我有一个具有净召回工资的列,包括我要排除的NAs,以及一个列,其中包含从1992年到2010年进行研究的年份,或多或少像这样:

q32 pgssyear
2000 1992
1000 1992
NA   1992
3000 1994
etc.

如果我尝试画一个如下的箱形图:

boxplot(dataset$q32~pgssyear,data=dataset, main="Recalled Net Salary per Month (PLN)",
    xlab="Year", ylab="Net Salary") 

似乎有效,但NAs可能会扭曲计算,所以我想摆脱它们:

boxplot(na.omit(dataset$q32)~pgssyear,data=dataset, main="Recalled Net Salary per Month (PLN)",
    xlab="Year", ylab="Net Salary") 

然后我收到一条警告消息,pgsyear和q32的长度不匹配,很可能是因为我从q32中删除了NA,所以我试图缩短pgsyear,以便它不包括与NAs对应的行q32专栏:

   pgssyearprim <- subset(dataset$pgssyear, dataset$q32!= NA )

然而,pgsyearprim被视为因子变量:

pgssyearprim
factor(0)       

如果我将它引入boxplot公式,我会得到相同的警告信息......

Levels: 1992 1993 1994 1995 1997 1999 2002 2005 2008 2010

1 个答案:

答案 0 :(得分:0)

当然他们不会......你只使用na.omit(dataset$q32)~pgssyear从LHS中删除了部分数据。而是使用!is.na(dataset$q32)作为子集参数