我有这样的文件。
1 3
1 2
1 10
1 5
**5 5**
6 7
8 9
4 6
1 2
**10 10**
......
该文件包含数千行。我想知道,如何删除R中包含相同值的行(包含5 5的行和包含10 10的行)?我知道如何删除重复列或重复行,但如何有选择地删除它们?谢谢。 :)
答案 0 :(得分:2)
我会使用索引进行此操作,例如使用小数据框:
myDf <- data.frame(a=c(3,5,8,6,9,4,3), b=c(3,3,5,8,9,6,4))
myDf <- myDf[myDf$a != myDf$b,]
答案 1 :(得分:0)
我会考虑编写一个这样的辅助函数:
indicator <- function(indf) {
rowSums(vapply(indf, function(x) x == indf[, 1],
logical(nrow(indf)))) == ncol(indf)
}
基本上,该函数会将data.frame
中的每一列与data.frame
的第一列进行比较,然后检查哪些rowSums
与列中的列数相同data.frame
。
这基本上创建了一个逻辑向量,可用于对data.frame
。
示例:
mydf <- data.frame(a=c(3,5,8,6,9,4,3),
b=c(3,3,5,8,9,6,4),
c=c(3,4,5,6,9,7,2))
indicator(mydf)
# [1] TRUE FALSE FALSE FALSE TRUE FALSE FALSE
mydf[!indicator(mydf), ]
# a b c
# 2 5 3 4
# 3 8 5 5
# 4 6 8 6
# 6 4 6 7
# 7 3 4 2