R - 打印具有 2 个重复列值的行的内容

R - Print Contents of Rows with 2 duplicated column values

我正在尝试在 R 中执行以下操作: 我有: .csv 数据文件,包含 38 列和 ~49,000 行 我想要的: 创建一个只列出有重复行的数据文件。我不想在每一列中查找重复项,特别是两列。

示例:

专栏 | 1 | 2 | 3 | 4

样本A | jkl| 相同 | sfio | 相同2

样本 B |新加坡金融管理局 | 相同 | sdi | 相同2

样本 C | sfjk | 相同 |身份证 | lskf

样本 D |以色列国防军 | 同3 | sfdjkl | 同4

样本 E | dfk| 同3 |文件系统 | 同4

我想要第 2 列和第 4 列(粗体列)相同的任何行的所有列(第 4 列)的输出...在这种情况下,我想要样本 A、B、D 和 E .

到目前为止,这是我的代码,试图在 Columns Gene 和 AAChange 中找到重复项:

findduplicates <- function(file){
        data <- read.csv(file)
        d <- which(duplicated(data[,Gene]) & duplicated(data[,AAChange]))
        rowdups <- table(d)
        rowdups
}

当我 运行 这样做时,出现以下错误: [.data.frame(数据,基因)中的错误:选择了未定义的列

在此先感谢您的帮助。

编辑

df[duplicated(df$x) & duplicated(df$z),]

不需要 which 声明,子集会自动完成。

df <- data.frame(x = c("a", "a", "b", "c"), y = c(1:4), z = c("d", "d", "e", "f"), stringsAsFactors=F)
  x y z
1 a 1 d
2 a 2 d
3 b 3 e
4 c 4 f
df[duplicated(df$x) & duplicated(df$z),]
  x y z
2 a 2 d 

df[df$x==df$z,]

这是数据:

df <- data.frame(x = c("a", "b", "c"), y = c(1:3), z = c("a", "d", "c"), stringsAsFactors=F)
df
  x y z
1 a 1 a
2 b 2 d
3 c 3 c

df[df$x==df$z,]
  x y z
1 a 1 a
3 c 3 c

R 在 x 列中逐行匹配它与 z 列中的同一行。

如果我没理解错的话,这是一种方法:

df <- read.table(text="jkl | SAME | sfio | SAME2
sfa | SAME | sdi | SAME2
sfjk | SAME | idso | lskf
idf | SAME3 | sfdjkl | SAME4
dfk | SAME3 | iodfs | SAME4",
sep='|')

interact <- interaction(df[[2]], df[[4]])
df[duplicated(interact) | duplicated(interact, fromLast=TRUE), ]
#     V1      V2       V3     V4
# 1 jkl    SAME     sfio   SAME2
# 2 sfa    SAME      sdi   SAME2
# 4 idf   SAME3   sfdjkl   SAME4
# 5 dfk   SAME3    iodfs   SAME4