【问题标题】:Add index numbers when converting sorted table to dataframe将排序表转换为数据框时添加索引号
【发布时间】:2014-08-24 21:06:58
【问题描述】:

我有一个字符串向量,我试图将其转换为带有频率列的数据框。到目前为止一切顺利,但是当我dim 我的数据框时,我只得到一列而不是两列。我猜 R 正在使用这些单词作为索引值。

无论如何,这就是它的开始方式。我的清单:

a<-c("welcoming", "whatsyourexcuse", "whiteway", "zero", "yay", "whatsyourexcuse", "yay")

然后,我尝试按降序对频率值进行排序并使用以下方法存储为数据框:

df <- as.data.frame(sort(table(a), decreasing=TRUE))

问题是当我dim(df) 我得到[1] 5 1 而不是[1] 5 2。这是df 的样子:

sort(table(a), decreasing = TRUE)

whatsyourexcuse                                  2
yay                                              2
welcoming                                        1
whiteway                                         1
zero                                             1

代替:

    a                                             Freq
[1] whatsyourexcuse                                  2
[2] yay                                              2
[3] welcoming                                        1
[4] whiteway                                         1
[5] zero                                             1

请指点一下?谢谢。

【问题讨论】:

  • 您当然可以分两步完成。 df &lt;- as.data.frame(table(a)) ; df[order(-df[2]), ]

标签: r sorting dataframe


【解决方案1】:

试试:

library(plyr)
a1 <- count(a)
a1[order(-a1$freq),]
#                 x freq
# 2 whatsyourexcuse    2
# 4             yay    2
# 1       welcoming    1
# 3        whiteway    1
# 5            zero    1
dim(a1)
#[1] 5 2

或者

 a2 <- stack(sort(table(a),decreasing=TRUE))[,2:1]
 dim(a2)
 #[1] 5 2

当您使用as.data.frame(sort(table(a), decreasing=TRUE)) 转换为data.frame 时,元素的名称将成为数据框的rownames,因此您只创建一列而不是两列。当您执行sort 时,它不再是table 对象。比较检查str(table(a))str(sort(table(a), decreasing=TRUE)))

您也可以通过

创建data.frame
 tbl <- sort(table(a), decreasing=TRUE)
 data.frame(col1= names(tbl), Values= as.vector(tbl))

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-25
    • 2020-07-11
    • 1970-01-01
    • 2013-03-26
    • 2017-02-12
    • 2012-05-12
    相关资源
    最近更新 更多