将已排序表转换为数据帧时添加索引号

时间:2014-08-24 21:06:59

标签: r sorting dataframe

我有一个字符串向量,我试图将其转换为带有频率列的数据帧。到目前为止一切都那么好,但是当我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

请指点什么?感谢。

1 个答案:

答案 0 :(得分: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))