查找列中最常见的值并获取其中的一部分

时间:2015-05-23 15:37:46

标签: r

我有以下数据集。

Num              Day              Value
1111             Thursday         2
2222             Thursday         2
3333             Thursday         3
1111             Monday           3
1111             Tuesday          3
1111             Wednesday        3
1111             Friday           4
1111             Saturday         5
1111             Sunday           6
2222             Thursday         6

我们可以使用以下命令获取列value中出现的最高值:tail(names(sort(table(data$value))), 1)

我动态地需要获取仅包含此最高值的数据子集。

所以我需要的输出是:

Num              Day              Value
3333             Thursday         3
1111             Monday           3
1111             Tuesday          3
1111             Wednesday        3

1 个答案:

答案 0 :(得分:5)

您可以使用subset

 indx <- tail(names(sort(table(df1$Value))),1)
 subset(df1, Value==indx)

或使用dplyr

 library(dplyr)
 df1 %>% 
   group_by(Value) %>% 
   mutate(N=n()) %>%
   ungroup() %>% 
   filter(N==max(N))

或者

  library(data.table)
  setDT(df1)[, N:=.N, Value][N==max(N)][, N:=NULL]