寻求一些关于创建新列的专业知识/指导,以根据一些选定的列指示可能的重复项。
我有以下数据框
ID | 动物 | 年龄 | 外送 | 费用 | 国家 |
---|---|---|---|---|---|
1 | 狗 | 5 | 空气 | 120 | 尼日利亚 |
2 | 猫 | 3 | 空气 | 110 | 肯尼亚 |
3 | 鱼 | 1 | 空气 | 20 | 肯尼亚 |
4 | 狗 | 5 | 空气 | 150 | 尼日利亚 |
5 | 猫 | 3 | 空气 | 100 | 肯尼亚 |
6 | 狗 | 6 | 空气 | 180 | 埃及 |
7 | 猫 | 3 | 空气 | 135 | 肯尼亚 |
8 | 乌龟 | 10 | 空气 | 90 | 尼日利亚 |
df = structure(list(ID = 1:8, Animals = c("dog", "cat", "fish", "dog",
"cat", "dog", "cat", "turtle"), Age = c(5L, 3L, 1L, 5L, 3L, 6L,
3L, 10L), Delivery = c("Air", "Air", "Air", "Air", "Air", "Air",
"Air", "Air"), Cost = c(120L, 110L, 20L, 150L, 100L, 180L, 135L,
90L), Country = c("Nigeria", "Kenya", "Kenya", "Nigeria", "Kenya",
"Egypt", "Kenya", "Nigeria")), class = "data.frame", row.names = c(NA,
-8L))
我想创建一个新列,突出显示 3 列 - 动物、年龄和国家是否重复多次以标记为重复项。
输出如下
ID | 动物 | 年龄 | 外送 | 费用 | 国家 | 新专栏 |
---|---|---|---|---|---|---|
1 | 狗 | 5 | 空气 | 120 | 尼日利亚 | Y |
2 | 猫 | 3 | 空气 | 110 | 肯尼亚 | Y |
3 | 鱼 | 1 | 空气 | 20 | 肯尼亚 | N |
4 | 狗 | 5 | 空气 | 150 | 尼日利亚 | Y |
5 | 猫 | 3 | 空气 | 100 | 肯尼亚 | Y |
6 | 狗 | 6 | 空气 | 180 | 埃及 | N |
7 | 猫 | 3 | 空气 | 135 | 肯尼亚 | Y |
8 | 乌龟 | 10 | 空气 | 90 | 尼日利亚 | N |
提前致谢!
您可以
group_by
您的目标列,然后使用n()
查看每组是否有多个记录。
library(dplyr)
df %>% group_by(Animals, Age, Country) %>% mutate(dup = n() > 1) %>% ungroup()
# A tibble: 8 × 7
ID Animals Age Delivery Cost Country dup
<int> <chr> <int> <chr> <int> <chr> <lgl>
1 1 dog 5 Air 120 Nigeria TRUE
2 2 cat 3 Air 110 Kenya TRUE
3 3 fish 1 Air 20 Kenya FALSE
4 4 dog 5 Air 150 Nigeria TRUE
5 5 cat 3 Air 100 Kenya TRUE
6 6 dog 6 Air 180 Egypt FALSE
7 7 cat 3 Air 135 Kenya TRUE
8 8 turtle 10 Air 90 Nigeria FALSE