r - 在数据框中查找唯一的行组

标签 r dataframe grouping

我有一个数据框,我想在其中比较行组并仅在整个组相同时才删除。例如:

df<-data.frame(X=c("a", "a", "a", "b", "b", "b", "c", "c", "c"), Y=c(1,2,1,2,2,2,1,2,1), Z=c("ABC","DEF","ABC", "DEF", "DEF", "DEF", "ABC", "DEF", "ABC"))

  X Y   Z
1 a 1 ABC
2 a 2 DEF
3 a 1 ABC
4 b 2 DEF
5 b 2 DEF
6 b 2 DEF
7 c 1 ABC
8 c 2 DEF
9 c 1 ABC

这里的组由 X 列标识,我想在不同组之间进行比较。所以,这里的a组和c组是相同的。我想得到如下最终期望的结果:

  GroupID Y   Z
1 1       1 ABC
2 1       2 DEF
3 1       1 ABC
4 2       2 DEF
5 2       2 DEF
6 2       2 DEF

知道如何进行这种比较吗?

最佳答案

base R 可能性:

# For each 'X', collapse 'Y' and 'Z' to a vector
l <- by(df[ , c("Y", "Z")], df$X, function(dat) paste0(dat, collapse = ""))

# select names of unique list elements
nm <- names(l)[!duplicated(l)]

# use these names to subset the data frame
df[df$X %in% nm, ]
#   X Y   Z
# 1 a 1 ABC
# 2 a 2 DEF
# 3 a 1 ABC
# 4 b 2 DEF
# 5 b 2 DEF
# 6 b 2 DEF

关于r - 在数据框中查找唯一的行组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27936977/

相关文章:

r - 子选择数据框

python - 如何根据每个组的大小设置滚动窗口大小?

r - 是否需要从基本包中显式导入 roxygen?

r - DataBricks 中将 R 数据帧转换为 Spark 数据帧是否有大小限制?

r - 向 ggplot 添加一个点会弄乱图例

python - 根据列名和最后一个非 NaN 值压缩 pandas 数据帧

python - 如何按索引替换整个 Pandas DataFrame 列?

mysql - 聚合子查询中重复 ID 的问题

ruby-on-rails - Rails has_many 通过、分组和汇总数据

r - 在 RStudio 中打开 SHP 文件