正确过滤子集 R

correct filtering whith subset R

我正在尝试对数据进行子集化,但似乎我做错了什么。

我的数据是带有header的一列数据,例如:

platform
========
service
vps
dedic
dedic
vps
service
dedic
....
...
..
.

我从一个大数据集中得到它:

servertype<- mydata[c(18)] #it was 18th variale

现在我正在尝试过滤它并仅对我需要的子集进行子集化,省略所有 "services"

servertype <- subset(servertype, platform=="dedicated" | platform=="vps")

我希望得到类似的东西:

platform
========
vps
dedic
dedic
vps
dedic
....
...
..
.

通过检查数据,这正是我得到的结果

但是当我检查摘要时,我得到

> summary(servertype)
      platform   
 dedicated:8564  
 service  :   0  
 vps      :4677 

并且在绘图时,"service" 也会出现...

我尝试重新启动 R、重新启动 session、清理数据等。:)

但没有变化,我想有条件的子集没有按我预期的那样工作? 还有其他办法吗?

我想你需要的就是这个。如果原始列是一个因子,子集列将保留所有原始因子水平。通过再次应用因子函数删除它们。

Drop factor levels in a subsetted data frame

再次factor数据:

#sample data
mydata = data.frame( platform = c('service','vps','dedic','dedic','vps','service','dedic'))

#subset
mydata = subset(mydata, mydata$platform != 'service' )

#factor the data again
mydata$platform = factor(mydata$platform)

#check plot
plot(mydata)

初始数据有 3 个因素。为了使用新的因子水平进行计算,只需对数据重新 运行 factor

新数据将只有两个所需的因子水平。

> summary(mydata)
  platform
 dedic:3  
 vps  :2