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