2

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

train <- train[1:100,]

大小缩小(使用dim()),但它似乎仍然存储了原始数据帧中的所有因素(我正在使用lsos()找到的here测量内存大小)。

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

有什么建议么?

4

1 回答 1

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"
于 2013-02-19T18:46:31.923 回答