How*_*rdA 0 r rows duplicates dataframe
假设我们有一个 R 数据框。我们如何识别(并删除)某个值至少出现两次的任何行?经过一番搜索,我仍然无法在网上找到解决方案。一个小代码示例说明了我所追求的:
> df <- data.frame(x = c(10, 20, 30, 50), y = c(30, 40, 40, 50),
z = c(40, 50, 10, 50), w = c(50, 40, 50, 50))
Run Code Online (Sandbox Code Playgroud)
这给出了数据框
>df
x y z w
1 10 30 40 50
2 20 40 50 40
3 30 40 10 50
4 50 50 50 50
Run Code Online (Sandbox Code Playgroud)
因此,df 在第 2 行和第 4 行中有重复的值,我想删除这些行,以获得result:
> result
x y z w
1 10 30 40 50
3 30 40 10 50
Run Code Online (Sandbox Code Playgroud)
对于我的应用程序,我可以使用一种假设只有四列的解决方案,尽管通用解决方案当然会更好。
这是一个选项base R- 循环遍历行apply,检查重复项(anyDuplicated- 返回第一个重复项的索引,如果没有重复项,则返回 0),然后取反(!- 使 0 变为 TRUE ,所有其他变为 FALSE )以子集化行
df[!apply(df, 1, anyDuplicated),]
Run Code Online (Sandbox Code Playgroud)
-输出
x y z w
1 10 30 40 50
3 30 40 10 50
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
156 次 |
| 最近记录: |