我想在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)中的错误:选择了未定义的列
提前感谢您的帮助。
答案 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