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
我正在尝试在 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