【问题标题】:Filtering single-column data frames过滤单列数据框
【发布时间】:2012-08-18 22:12:57
【问题描述】:

我正在尝试过滤只有一列的数据框。这会导致返回一个向量,如下所示:

single.c <- data.frame(col1=c(1,2,3,4,5), row.names=C("r1","r2","r3","r4","r5"))
single.c[single.c$col1 > 2,]

[1] 3 4 5

我真正想要的是像多列数据框一样返回的数据:

multi.c <- data.frame(col1=c(1,2,3,4,5), col2=c(1,2,3,4,5), row.names=c("r1","r2","r3","r4","r5"))
multi.c[multi.c$col2 > 2,]

   col1 col2
r3    3    3
r4    4    4
r5    5    5

如果没有其他列,我可以看到返回向量是有意义的,但通常我也想看看哪些行也给出了该结果。为什么会发生这种情况,是否有一种简单的方法可以在结果中保留数据框形状,包括行名?

【问题讨论】:

    标签: r dataframe


    【解决方案1】:

    在选择函数中使用drop 参数:

    single.c[single.c$col1 > 2, ,drop=F]
    
    #   col1
    #r3    3
    #r4    4
    #r5    5
    

    来自[ 的文档:

    放下

    对于矩阵和数组。如果为 TRUE,则结果被强制为最低值 可能的维度(参见示例)。这仅适用于提取 元素,不用于替换。有关详细信息,请参阅 drop。

    【讨论】:

    • 谢谢,我不知道?'[' 下列出了文档!
    • 好东西!我一直想知道如何通过从现有 data.frame 中提取单个列来获取 data.frame!我一直在使用 data.frame(col1=multi.col$col1,row.names=rownames(multi.col)) 来做同样的事情!哇!
    猜你喜欢
    • 2021-08-16
    • 1970-01-01
    • 2016-03-22
    • 2019-03-07
    • 1970-01-01
    • 2020-07-01
    • 2020-01-18
    • 1970-01-01
    • 2017-11-03
    相关资源
    最近更新 更多