从count()中提取值

时间:2015-07-09 07:45:43

标签: r

我得到一个freq表,但是我可以将这个表保存在csv文件中还是 - 更好 - 排序它还是提取最大值?

library(plyr)
count(birthdaysExample, 'month') 

1 个答案:

答案 0 :(得分:1)

我猜测数据的相关部分是什么样的,但无论如何,这应该会得到一个按值排序的频率表:

library(plyr)
birthdaysExample <- data.frame(month = round(runif(200, 1, 12)))
freq_df <- count(birthdaysExample, 'month')

freq_df[order(freq_df$freq, decreasing = TRUE), ]

这会给你:

   month freq
5      5   29
9      9   24
3      3   22
4      4   18
6      6   17
7      7   15
2      2   14
10    10   14
11    11   14
8      8   13
1      1   10
12    12   10

获得最高的3个值:

library(magrittr)
freq_df[order(freq_df$freq, decreasing = TRUE), ] %>% head(., 3)
  month freq
5     5   29
9     9   24
3     3   22

或者,只用基数R:

head(freq_df[order(freq_df$freq, decreasing = TRUE), ], 3)

使用dplyr

对于R(one of many tutorials)中的许多常规数据操作来说,

dplyr是一个更新的方法,它更直观:

library(dplyr)
library(magrittr)
freq_df2 <- birthdaysExample %>% 
  group_by(month) %>% 
  summarize(freq = n()) %>% 
  arrange(desc(freq))
freq_df2

返回:

Source: local data frame [12 x 2]

   month freq
1      5   29
2      9   24
3      3   22
4      4   18
5      6   17
6      7   15
7      2   14
8     10   14
9     11   14
10     8   13
11     1   10
12    12   10

它返回的对象不再是数据框,所以如果你想使用它的基本R函数,可能更容易将其转换回来,例如:

my_df <- as.data.frame(freq_df2)

如果您真的想要,可以将其写入CSV文件:

write.csv(my_df, file="foo.csv")