首页 > 解决方案 > 计算 R studio 中每个观察值的常见事件数和分类变量中的值

问题描述

我的DataFrame由两列组成,第一列是id第二列Value.1。我想创建一个有 4 列的表:

  1. id
  2. 每个id在表中出现 的次数
  3. 哪个值(在值 1 中)出现的次数最多id
  4. 多少次。

输出应该是一个包含上述四个部分的表格。

我的输入:

数据。

Value.1        id
a              235
a              235
b              256
b              258
c              235
c              222
c              258
a              256
c              258

标签: r

解决方案


以下代码完成了问题的要求。

  1. 按组获取计数 ( times)idValue.1
  2. 分组依据id,最终分组标准
  3. 获取最大计数
  4. 创建一个全部Value.1等于最大值的字符串times
  5. 总和times

这是作为管道实现的。

library(dplyr)

df1 %>%
  count(id, Value.1, name = "times") %>%
  group_by(id) %>%
  summarise(Times.of.Common.value.1 = max(times),
            Common.value.1 = paste(Value.1[times == Times.of.Common.value.1], collapse = ","),
            times = sum(times))
## A tibble: 4 x 4
#     id Times.of.Common.value.1 Common.value.1 times
#  <int>                   <int> <chr>          <int>
#1   222                       1 c                  1
#2   235                       2 a                  3
#3   256                       1 a,b                2
#4   258                       2 c                  3

编辑。

在此处遵循 OP 的评论是count.

df1 %>%
  count(id, Value.1, name = "times")
## A tibble: 7 x 3
#     id Value.1 times
#  <int> <fct>   <int>
#1   222 c           1
#2   235 a           2
#3   235 c           1
#4   256 a           1
#5   256 b           1
#6   258 b           1
#7   258 c           2

数据。

df1 <- read.table(text = "
Value.1        id
a              235
a              235
b              256
b              258
c              235
c              222
c              258
a              256
c              258
", header = TRUE)

推荐阅读