无法使用R

时间:2016-04-23 11:12:06

标签: r

我想从数据集中创建一个包含单词的单词和频率的列表。我做了它并保存到名为' 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

2 个答案:

答案 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