具有因子的R大数据帧在子集时不会收缩

时间:2013-02-19 18:44:50

标签: r character subset r-factor

我有一个带有多个因子变量的大数据帧(100k Row x 50 Col)。我想要一个小的子集(如100行)来做一些原型设计。问题是当我输入:

train <- train[1:100,]

尺寸缩小(使用dim()),但它似乎仍然存储原始数据框中的所有因素(我使用lsos()找到here来衡量内存大小。

有没有办法解决这个问题?到目前为止,我发现的唯一方法是将因子变量转换为字符串然后再转换为子集,然后再次转换为因子。我觉得必须有更好的方法来做到这一点。

有什么建议吗?

1 个答案:

答案 0 :(得分:4)

使用droplevels函数删除新data.frame中没有的关卡,有关详细信息,请参阅?droplevels

示例:

> DF <- data.frame(num=1:15, letter=rep(letters[1:5], each=3),random=rnorm(15))
> levels(DF[, 2]) # all levels
[1] "a" "b" "c" "d" "e"
> 
> DF2 <- DF[1:10, ] # subseting
> levels(DF2[, 2]) # all levels again
[1] "a" "b" "c" "d" "e"
> DF2[, 2] <- droplevels(DF2[, 2])
> levels(DF2[, 2]) # only the levels contained in DF2
[1] "a" "b" "c" "d"