【发布时间】:2018-04-07 06:25:12
【问题描述】:
我正在尝试向数据框中添加行,然后检查/删除在数据框的单个列中具有重复值的行。最终目标是如果提供了新值,则本质上是覆盖数据框中的一行。我无法弄清楚如何使用 dplyr (或实际上使用 R)动态指定行名,所以我正在这样做。
我从一个测试数据框开始,并使用 dplyr 删除列位置重复的第一组行,如下所示:
testData.df<-data_frame(Position=c("B1","B2","B3","B1","B2","B3"), rep=c("B1","B2","B3","B4","B5","B6"),name=c(rep("wibble",each=6)),status=c(rep("unknown", each=6)))
testData.df <- testData.df %>%
filter(duplicated(Position))
testData.df
# A tibble: 3 x 4
Position rep name status
<chr> <chr> <chr> <chr>
1 B1 B4 wibble unknown
2 B2 B5 wibble unknown
3 B3 B6 wibble unknown
正如我所期望的那样。当我再次运行相同的过滤器时,我得到了这个:
testData.df <- testData.df %>%
filter(duplicated(Position))
testData.df
# A tibble: 0 x 4
# ... with 4 variables: Position <chr>, rep <chr>, name <chr>, status <chr>
到底为什么要删除不重复的行?第一次运行它意味着它正在按预期工作,即它删除了实际的重复项。我无法解释第二轮的行为差异。
【问题讨论】: