r - 如何检查一个数量未分配给其他字段的两个不同数量
问题描述
假设我有以下格式的数据(实际数据要大得多):
CODE NAME DATE HOUR
1 Ab 1/1/19 1
1 Ab 1/1/19 2
1 Ab 1/1/19 3
2 Xy 1/1/19 1
2 Xy 1/1/19 2
2 Xy 1/1/19 3
3 Ab 1/1/19 1
3 Ab 1/1/19 2
3 Ab 1/1/19 3
4 Pq 1/1/19 1
4 Pq 1/1/19 2
4 Pq 1/1/19 3
如何识别 NAME 字段中的任何值被分配给两个或多个值。像这里Ab
分配给 CODE1
以及3
. 所需的输出如下:
CODE NAME
1 Ab
3 Ab
我确实尝试了以下操作,它给出了所需的输出:
library(dplyr)
df1 <- df %>% distict(CODE, NAME, .keep_all = TRUE)
df2 <- df1[duplicated(df1$NAME),]
我知道必须有更好的方法来做到这一点。如何实现。
解决方案
一种方法是选择NAME
超过 1 个唯一的位置CODE
并保持不同的行。
library(dplyr)
df %>%
group_by(NAME) %>%
filter(n_distinct(CODE) > 1) %>%
distinct(CODE, NAME)
# CODE NAME
# <int> <fct>
#1 1 Ab
#2 3 Ab
数据
df <- structure(list(CODE = c(1L, 1L, 1L, 2L, 2L, 2L, 3L, 3L, 3L, 4L,
4L, 4L), NAME = structure(c(1L, 1L, 1L, 3L, 3L, 3L, 1L, 1L, 1L,
2L, 2L, 2L), .Label = c("Ab", "Pq", "Xy"), class = "factor"),
DATE = structure(c(1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L,
1L, 1L), .Label = "1/1/19", class = "factor"), HOUR = c(1L,
2L, 3L, 1L, 2L, 3L, 1L, 2L, 3L, 1L, 2L, 3L)), class = "data.frame",
row.names = c(NA, -12L))
推荐阅读
- magento2 - 结帐加载程序不断加载 Magento 2.3.7
- python-3.x - 执行 Python 代码 JSONDecodeError 时出错:预期值:第 1 行第 81870 列(字符 81869)
- c++ - 代码无法在 C++ 中将浮点数检测为大于 0
- php - 如何为 PHP Amazon Pay SDK 完成CheckoutSession?
- angularjs - 从 angularJS 前端将图像上传到 C4C Odata
- ios - 推送通知邮递员 InvalidApnsCredential ios
- javascript - 为什么视图和文本输入之间存在差距?
- python - pandas groupby 仅聚合两个连续字段之间共有的行
- c# - 谁能解释为什么连接许多 FirstAsync 会阻止父可观察对象的完成?
- javascript - 无法从 serviceWorker 对象获取注册