r - 识别按唯一 ID 分组的行中的冲突
问题描述
我有一个包含多个重复行的数据集,类似于:
UniqueID = c(111, 111, 222, 222, 333, 333)
Color = c("Yellow", "Yellow", "Blue", "Blue", "Green", "Pink")
Height = c(11, 12, 22, 23, 33, 33)
df = data.frame(UniqueID, Color, Height)
在共享相同唯一 ID的一组行中,我希望能够突出显示任何冲突的数据(即不相同的数据)。
例如,在上表中,三个组由其唯一 ID 定义。111,222 and 333
.
在每个组中,我想强调相互矛盾的数据。例如,在组中,111
我会强调高度不同(11 对 12)。在小组222
中,我也会突出身高。但是,在组中333
我会突出显示颜色(绿色与粉红色)
我的计划是使用 为library(DT)
单元格着色,这样我至少可以直观地了解冲突发生的位置,然后开始评估如何解决它们。
最终结果将类似于:
duplicated
到目前为止,我一直在使用删除列中的重复项,但努力解决如何解决这个问题。目前我能想到的唯一方法是根据唯一 ID 将所有数据子集到单个 df 中,然后突出显示每个 df 中的重复项,但是有 11,000 行,这似乎非常笨拙。
方向上的一点将不胜感激!
解决方案
我不太确定可视化,但可以使用group_by()
并summarize()
获得概述,以及随后的操作来查找细节,例如,
tbl = tibble(UniqueID, Color, Height)
n <- tbl %>%
group_by(UniqueID) %>%
summarize(color = list(unique(Color)), height = list(unique(Height))
给予
> n
# A tibble: 4 x 3
UniqueID color height
<dbl> <list> <list>
1 111 <chr [1]> <dbl [2]>
2 222 <chr [1]> <dbl [2]>
3 333 <chr [2]> <dbl [1]>
4 444 <chr [1]> <dbl [1]>
可以查询,例如,
> filter(n, lengths(color) >=2)
# A tibble: 1 x 3
UniqueID color height
<dbl> <list> <list>
1 333 <chr [2]> <dbl [1]>
> filter(n, lengths(color) >=2) %>% tidyr::unnest("color")
# A tibble: 2 x 3
UniqueID color height
<dbl> <chr> <list>
1 333 Green <dbl [1]>
2 333 Pink <dbl [1]>
推荐阅读
- sql - 如何替换 Oracle 数据库中 nclob 类型列中的 xml 元素?
- r - 如何删除列表中的相同行?
- apple-music - 历史:播放的歌曲
- pic - PIC如何将PPS映射到正常输入
- nuget - 如何使用 JFrog CLI 按版本号对 Artifactory 包搜索结果进行排序?
- sql - 如何更改此动态查询
- php - tcpdf 中的 SVG 渲染器不支持 00FF 以上的 UTF-8 字符吗?
- javascript - 将多个动作传递给 bindActionCreators
- r - override.aes 与列表参数的命名向量
- css - 如何应用 CSS 覆盖来阻止相对日期