子集化并删除排除的不同值

Subset and remove excluded distinct values

我需要在对数据框进行子集化时删除排除的值。也就是说,如果我在下面的示例中调用摘要,z 不应显示为 `name2 的不同值,是否有可能让子集的 ID 从 1 开始?

bspframestring<-( "id,name1,name2,v1,v2,v3,v4
 1,1,z,1,1,5,1
 2,2,z,0,1,8,1
 3,2,y,0,4,0,5 
 4,1,y,5,3,4,4
 5,2,y,4,9,5,5")

bspframe<-read.table(textConnection(bspframestring),
                     header=TRUE,sep=",",row.names="id")

bspframesub<-subset(bspframe,name2=="y",select=c("name1","name2","v2"))

summary(bspframesub)

#     name1       name2       v2       
# Min.   :1.000   y:3   Min.   :3.000  
# 1st Qu.:1.500   z:0   1st Qu.:3.500  
# Median :2.000         Median :4.000  
# Mean   :1.667         Mean   :5.333  
# 3rd Qu.:2.000         3rd Qu.:6.500  
# Max.   :2.000         Max.   :9.000  

row.names(bspframesub)

# [1] "3" "4" "5"

试试这个:

summary(droplevels(bspframesub))

并且要使因子级合并永久化,需要赋值结果:

bspframesub <- droplevels(bspframesub)

还有一个 rownames<- 函数,可以给它一个 1:now(bspframesub) 参数。您还可以给它一个 NULL 参数,让您返回默认值:

> row.names(bspframesub) <- NULL
> row.names(bspframesub)
[1] "1" "2" "3"