【问题标题】:R large data frame with factors won't shrink when subset [duplicate]子集时带有因子的R大数据框不会缩小[重复]
【发布时间】:2013-02-04 13:54:16
【问题描述】:
我有一个包含多个因子变量的大型数据框(100k Row x 50 Col)。我想要一个小子集(比如 100 行)来做一些原型设计。问题是当我输入时:
train <- train[1:100,]
大小缩小了(使用dim()),但它似乎仍然存储了原始数据帧中的所有因素(我正在使用lsos() 测量内存大小,发现here)。
有没有办法解决这个问题?到目前为止,我发现的唯一方法是将因子变量转换为字符串,然后是子集,然后再次转换为因子。我觉得必须有更好的方法来做到这一点。
有什么建议吗?
【问题讨论】:
标签:
r
character
subset
r-factor
【解决方案1】:
使用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"