2013-11-27 179 views
2

名为对象重复录入有了这些数据集,删除R中

1415967_at 56258 
1415968_a_at 20249 
1415963_at 20249 
1415966_a_at 16483 

我可以设法convert to a named-list:

dat <- read.table("http://dpaste.com/1484733/plain/") 
nl <- setNames(as.list(dat[[2]]), dat[[1]]) 

这个特定命名对象 后来我们想去掉多余的(_at), 其中数值是多余的。 我们将只保留第一次出现。

在这一新的非命名对象冗余所得:

$`1415967_at` 
[1] 56258 

$`1415968_a_at` 
[1] 20249 

$`1415966_a_at` 
[1] 16483 

在上面的例子1415968_a_at1415963_at和是多余的,因为 的数值是相同的:20249。 因此,我们只保留第一个1415968_a_at。 实际上,重复的数量可以变化(超过2)。

这样做的方法是什么?

回答

3

您可以排除与重复:

n1[!duplicated(n1)] 

# $`1415967_at` 
# [1] 56258 
# 
# $`1415968_a_at` 
# [1] 20249 
# 
# $`1415966_a_at` 
# [1] 16483 
1

或者怎么样与plyr,您可以添加更多复杂的功能有关,其中一至保持:

require(plyr) 
dat <- read.table("http://dpaste.com/1484733/plain/") 
dat <-ddply(dat,.(V2),summarize,V1=V1[1]) 
nl <- setNames(as.list(dat[[2]]), dat[[1]]) 

例如在ddply()功能,你可以更换:

V1=V1[1]     # PICK THE FIRST 

关于如何选择

更复杂的代码