我想从数据集中创建一个包含单词的单词和频率的列表。我做了它并保存到名为' mylist的val中。现在我想根据单词的频率对列表进行排序,并根据频率较高的10个单词创建条形图。
但我没有成功排序。我尝试了很多方法来改变' mylist'到data.frame或date.table但频率列仍然是列表。 总结我有包含它的DT var是一个包含2列x的列表 - 包含单词,类型是字符。 第2列是' v' - 包含频率,它是一个列表。 我没有成功按频率对其进行排序。 请帮帮我。
library(ggplot2)
libary(MASS)
#get the data
data.uri = "http://www.crowdflower.com/wp-content/uploads/2016/03/gender-classifier-DFE-791531.csv"
pwd = getwd()
data.file.name = "gender.csv"
data.file = paste0(pwd, "./", data.file.name)
download.file(data.uri, data.file)
data = read.csv(data.file.name)
#manipulate the data
data <- data[data$X_unit_id < 815719694,]
print(data$X_unit_id)
#get all female has white sidebar
female_colors <- subset(data, data$gender=="female")
female_colors$fav_number
#get all male fav_numbers
male_colors <- subset(data, data$gender=="male")
male_colors$fav_number
text_male = subset(data, data$gender=="male")
text_male = text_male$text
print(text_male[1])
print(length(text_male))
v <- text_male[1:length(text_male)]
print(v)
print (v[1])
count_of_list = 0;
x = list()
for ( i in v) {
# Merge the two lists.
x <- c(x,unlist(strsplit(i," ")))
}
count = 0;
mylist = list()
for (word in x){
for (xWord in x){
if (word == xWord)
count = count + 1;
}
key <- word
value <- count
mylist[[ key ]] <- value
count = 0;
}
libary(data.table)
require(data.table)
DT = data.table(x=c(names(mylist)),v=c(mylist))
DT
答案 0 :(得分:0)
正如评论中所建议的那样,可重复的示例可用于创建帮助您的答案。无论如何,我会建议一个提案。尝试使这个方法适应您的数据。
将您的列表转换为数据框并使用order
:
df <- as.data.frame(your.data)
df <- data.frame(id = c("B", "A", "D", "C"), y = c(6, 8, 1, 5))
df
id y
1 B 6
2 A 8
3 D 1
4 C 5
df2 <- df[order(df$id), ]
df2
id y
2 A 8
1 B 6
4 C 5
3 D 1
答案 1 :(得分:0)
看起来你正在使用一种繁琐的方法来计算字数,这样的事情更快更简单 -
library(dplyr)
foo <- c("ant", "ant", "bat", "dog","egg","ant","bat")
bar <- rnorm(7, 5, 2)
df <- data.frame(foo, bar)
group_by(df, foo) %>% summarise(n = n()) %>% arrange(desc(n))
foo n
(fctr) (int)
1 ant 3
2 bat 2
3 dog 1
4 egg 1