【发布时间】:2019-04-06 02:34:19
【问题描述】:
这是我的玩具数据框。
df <- tibble::tribble(
~var1, ~var2, ~var3, ~var4, ~var5, ~var6, ~var7,
"A", "C", 1L, 5L, "AA", "AB", 1L,
"A", "C", 2L, 5L, "BB", "AC", 2L,
"A", "D", 1L, 7L, "AA", "BC", 2L,
"A", "D", 2L, 3L, "BB", "CC", 1L,
"B", "C", 1L, 8L, "AA", "AB", 1L,
"B", "C", 2L, 6L, "BB", "AC", 2L,
"B", "D", 1L, 9L, "AA", "BC", 2L,
"B", "D", 2L, 6L, "BB", "CC", 1L)
如何获得能够唯一标识数据框中的观察结果的最少变量组合,即哪些变量一起可以构成主键?
我解决这个问题的方法是找到不同值等于数据框观察次数的变量组合。因此,在这种情况下,这些变量组合会给我 8 个观察结果。我随机试了一下,发现很少:
df %>% distinct(var1, var2, var3)
df %>% distinct(var1, var2, var5)
df %>% distinct(var1, var3, var7)
所以 vars123, vars125, vars137 配得上这里的主键。如何使用 R 以编程方式找到这些变量组合。此外,如果可能的话,应该更优先考虑字符、因子、日期和(也许)整数变量,因为双打不应该成为主键。
输出可以是列表或数据框,说明组合“var1、var2、var3”、“var1、var2、var5”、“var1、var3、var7”。
【问题讨论】:
标签: r data.table tidyverse