在R中新增列:基于Animal、Age、Country标记重复行
在R语言中基于指定列组合标记重复行
注:原数据框的列名为Animals,并非描述中的Animal,以下实现将使用正确的列名。
你可以通过两种常见方式实现需求:为数据框新增一列,当Animals、Age、Country三列的组合重复出现时标记为"Y",否则标记为"N"。
方法1:基础R实现
使用ave()函数按指定列分组计算每组行数,再根据行数判断标记:
# 新增标记列 df$New_Column <- with(df, ifelse(ave(ID, Animals, Age, Country, FUN = length) > 1, "Y", "N"))
方法2:tidyverse(dplyr)实现
通过分组统计每组数量生成标记:
library(dplyr) df <- df %>% group_by(Animals, Age, Country) %>% mutate(New_Column = ifelse(n() > 1, "Y", "N")) %>% ungroup()
最终结果
运行上述代码后,数据框将新增New_Column列,结果如下:
| ID | Animals | Age | Delivery | Cost | Country | New_Column |
|---|---|---|---|---|---|---|
| 1 | dog | 5 | Air | 120 | Nigeria | Y |
| 2 | cat | 3 | Air | 110 | Kenya | Y |
| 3 | fish | 1 | Air | 20 | Kenya | N |
| 4 | dog | 5 | Air | 150 | Nigeria | Y |
| 5 | cat | 3 | Air | 100 | Kenya | Y |
| 6 | dog | 6 | Air | 180 | Egypt | N |
| 7 | cat | 3 | Air | 135 | Kenya | Y |
| 8 | turtle | 10 | Air | 90 | Nigeria | N |
内容的提问来源于stack exchange,提问作者Luther_Proton
相关产品推荐
相关产品推荐

