首页 > 解决方案 > R中按操作分组中最常见的因素

问题描述

我有一个这样的数据框:

ID_CLI 搅动
12 0
12 0
25 1
25 1
25 1
27 0

我想在 ID_CLI 上分组并有这样的输出:

ID_CLI 搅动
12 0
25 1
27 0

标签: r

解决方案


这是一种dplyr方法。

library(dplyr)

df1 %>%
  count(ID_CLI, CHURN) %>%
  group_by(ID_CLI) %>%
  slice_max(order_by = n, n = 1) %>%
  select(-n)
## A tibble: 3 x 2
## Groups:   ID_CLI [3]
#  ID_CLI CHURN
#   <int> <int>
#1     12     0
#2     25     1
#3     27     0

和一个基本的 R 方式。

df2 <- local({
  tbl <- table(df1)
  data.frame(
    ID_CLI = unique(df1$ID_CLI),
    CHURN = colnames(tbl)[apply(tbl, 1, which.max)]
  )
})
df2
#  ID_CLI CHURN
#1     12     0
#2     25     1
#3     27     0

数据

df1 <- read.table(text = "
ID_CLI  CHURN
12  0
12  0
25  1
25  1
25  1
27  0
", header = TRUE)

推荐阅读