用于识别 R 中重复行的新列

问题描述 投票:0回答:1

寻求一些关于创建新列的专业知识/指导,以根据一些选定的列指示可能的重复项。

我有以下数据框

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

提前致谢!

r dataframe dplyr tidyverse data-manipulation
1个回答
0
投票

您可以

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
© www.soinside.com 2019 - 2024. All rights reserved.