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

时间:2015-05-15 19:30:00

标签: r duplicates

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

示例:

列| 1 | 2 | 3 |的 4

样品A | jkl | 相同 | sfio |的 SAME2

样品B | sfa | 相同 | sdi |的 SAME2

样本C | sfjk | 相同 | idso |的 lskf

样本D | idf | SAME3 | sfdjkl |的 SAME4

样本E | dfk | SAME3 | iodfs |的 SAME4

我想要列2和列的任何行的所有列(列-4)的输出。 4(粗体列)是相同的......在这种情况下,我想要样品A,B,D和&即

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

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

当我运行它时,我收到以下错误:  [.data.frame(data ,, Gene)中的错误:选择了未定义的列

提前感谢您的帮助。

2 个答案:

答案 0 :(得分:1)

修改

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列中的同一行匹配。

答案 1 :(得分:0)

如果我理解你的话,这是一种方式:

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