数据框

时间:2017-10-21 02:31:01

标签: r function for-loop dataframe

如果您想查找数据框中每列的最大频率并返回因子,类别和频率,您会怎么做?

所以我的代码如下:

dfreqcommon = data.frame()

for (i in 1:ncol(diamonds)){

dfc = data.frame(t(table(diamonds[,i])))
dfc$Var1 = names(diamonds)[i]

dfreqcommon = rbind(dfreqcommon, dfc)

}

names(dfreqcommon) = c("Factors","Categories","Frequency")

dfreqcommon

但这似乎返回了所有因素,类别和频率。我只想要每个因素的最大频率并获得其类别。我试图将dfc更改为

dfc = data.frame(max(t(table(diamonds[,i]))))

但它没有显示类别。有什么方法可以解决这个问题吗?

2 个答案:

答案 0 :(得分:2)

另一种方式,python-giggle\lib\giggle\test\data R:

base

答案 1 :(得分:1)

你的意思是你想要一个像这样的结果吗?以下示例显示了如何为ggplot2::diamonds数据集中的每列获取最常出现的值。

library(dplyr)
library(tidyr)
ggplot2::diamonds %>% 
  mutate_all(as.character) %>%
  gather(varname, value) %>%
  count(varname, value) %>%
  group_by(varname) %>%
  arrange(desc(n), .by_group = TRUE) %>%
  slice(1)

#> # A tibble: 10 x 3
#> # Groups:   varname [10]
#>    varname value     n
#>      <chr> <chr> <int>
#>  1   carat   0.3  2604
#>  2 clarity   SI1 13065
#>  3   color     G 11292
#>  4     cut Ideal 21551
#>  5   depth    62  2239
#>  6   price   605   132
#>  7   table    56  9881
#>  8       x  4.37   448
#>  9       y  4.34   437
#> 10       z   2.7   767