2015-08-15 95 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