2015-08-15 59 views
-1

我想重复的ID来删除行与重复的ID

数据

id V1 V2 
1  a  1 
1  b  2 
2  a  2 
2  c  3 
3  a  4 

的问题是,有些人做了试验了几次,它产生于V2多个分数删除行,我想删除重复的id并随机保留V2中的一个分数。

输出

id V1 V2 
1  a  1 
2  a  2 
3  a  4 

我尝试这样做:

neu <- unique(neu$userid) 

但它并没有根据您的工作,例如

+1

'DF [!复制(DF $ ID),]'? – r2evans

+0

已经尝试过,df [!duplicated(neu $ userid)]中的错误,]: 'closure'类型的对象不是子集合 – Lucia

+2

尝试'df [!重复(df $ userid)],'' – Whitebeard

回答

1

使用dplyr

library(dplyr) 
set.seed(1) 
df %>% sample_frac(., 1) %>% arrange(id) %>% distinct(id) 

输出:

id V1 V2 
1 1 b 2 
2 2 c 3 
3 3 a 4 

数据:

df <- structure(list(id = c(1L, 1L, 2L, 2L, 3L), V1 = structure(c(1L, 
2L, 1L, 3L, 1L), .Label = c("a", "b", "c"), class = "factor"), 
    V2 = c(1L, 2L, 2L, 3L, 4L)), .Names = c("id", "V1", "V2"), class = "data.frame", row.names = c(NA, 
-5L)) 
+0

This Works!非常感谢。 – Lucia

0

创建数据帧:

df <- read.table(text = 
"id V1 V2 
1  a  1 
1  b  2 
2  a  2 
2  c  3 
3  a  4", h = T) 

由于你想删除行随机,第一数据帧的行随机排序:

df <- df[sample(nrow(df)),] 

然后删除重复的appearence的顺序:

df <- df[!duplicated(df$id),] 

现在那种你回数据帧:

df <- df[with(df, order(id)),] 

记住按您的数据框名称更改df