【发布时间】:2022-01-11 10:40:27
【问题描述】:
我有一个大型数据集需要这样做,但我会针对较小的数据集描述问题。
| Var1 | Var2 |
|---|---|
| A | B |
| A | C |
| A | D |
| B | A |
| E | F |
| G | H |
我想只保留一个值为“A-B”的行,并删除具有反向“B-A”的行。所有其他行也应该保留。
提前致谢。
【问题讨论】:
我有一个大型数据集需要这样做,但我会针对较小的数据集描述问题。
| Var1 | Var2 |
|---|---|
| A | B |
| A | C |
| A | D |
| B | A |
| E | F |
| G | H |
我想只保留一个值为“A-B”的行,并删除具有反向“B-A”的行。所有其他行也应该保留。
提前致谢。
【问题讨论】:
df[!(df$Var1 == 'B' & df$Var1 == 'A'), ]
使用 dplyr:
dplyr::filter(df, !(Var1 == 'B' & Var1 == 'A'))
可重现的输入数据:
df <- data.frame(
Var1 = c('A', 'A', 'A', 'B', 'E', 'G'),
Var2 = c('B', 'C', 'D', 'A', 'F', 'H')
)
【讨论】:
dput 发布您的数据子集,并展示所需结果的示例。
如果我理解正确
df <- df <- data.frame(
Var1 = c('A', 'A', 'A', 'B', 'E', 'G'),
Var2 = c('B', 'C', 'D', 'A', 'F', 'H')
)
fltr <- !duplicated(apply(df, 1, function(x) paste0(sort(x), collapse = "")))
df[fltr, ]
#> Var1 Var2
#> 1 A B
#> 2 A C
#> 3 A D
#> 5 E F
#> 6 G H
由reprex package 创建于 2022-01-11 (v2.0.1)
【讨论】: