r - 如何删除数据集的重复值并计算每个值重复的次数?
问题描述
我每个月都会收到一个具有唯一参考 ID 的数据集,其中包含重复值。我必须删除重复的唯一 ID,并计算每个 ID 重复的次数。
name <- c("A","A","A","B","B","c","D","A")
age <- c(22,23,22,32,32,54,65,70)
sex <- c("m","f","f","m","m","f","m","f")
both <- data.frame(name,age,sex)
both
both[!duplicated(both$name),]
期望输出:
name age sex count
A 70 f 4
B 32 m 2
C 54 f 1
D 65 m 1
解决方案
我们可以按'name'分组,得到频率计数(n()
),然后filter
是'sex'频率值最高的行,slice
最后一行
library(dplyr)
both %>%
group_by(name) %>%
group_by(n = n(), add = TRUE) %>%
filter(sex == Mode(sex)) %>%
slice(n())
# A tibble: 4 x 4
# Groups: name, n [4]
# name age sex n
# <fct> <dbl> <fct> <int>
#1 A 70 f 4
#2 B 32 m 2
#3 c 54 f 1
#4 D 65 m 1
在哪里
Mode <- function(x) {
ux <- unique(x)
ux[which.max(tabulate(match(x, ux)))]
}
推荐阅读
- vue.js - forEach() 调用无法编译
- javascript - 单击搜索框时删除类
- python - 如何在 Python 3 中遍历用户定义的类?
- c# - IAsyncResult 和未观察到的异常
- python - 使用列表推导返回一个新列表
- python - 我如何让 Pycharm 打破异常
- python - 实现解析演算的算法
- mysql - Mysql:如何在 1 行中向现有表添加唯一列?
- bash - 如何通过管道在grep之后使用if语句
- c# - System.Private.CoreLib.dll 中发生“System.InvalidOperationException”,但未在用户代码中处理