【问题标题】: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"
    

    【讨论】:

    • 完美。非常感谢!
    • +1,太好了,我不知道droplevels
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-09-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-07-04
    • 2013-10-20
    • 1970-01-01
    相关资源
    最近更新 更多