2016-05-16 51 views
0

所以我有關於人服用普通化學1,2005年至2015年期間保持最小值兩個或兩個以上的觀察中的R

數據之間的大學長格式的數據是這個樣子

ID Term Grade Repeated 
260 2010  F   1 
260 2011  F   1 
260 2012  C   0 
203 2011  B   0 
204 2012  D   1 
204 2013  B   1 

正如你可以看到一些人拿着類只有一次,有些重複了一次或兩次。我有興趣保持他們第一次上課的成績。

某些內容ID重複keepd最小(TERM)或什麼?我有一個25萬行

謝謝!

回答

1

如果你的數據幀由Term然後

df[!duplicated(df$ID),] 
# ID Term Grade Repeated 
#1 260 2010  F  1 
#4 203 2011  B  0 
#5 204 2012  D  1 
0

使用dplyr包排序,你可以按如下做到這一點:

library(dplyr) 
df %>% group_by(ID) %>% filter(Term == min(Term)) 

Source: local data frame [3 x 4] 
Groups: ID [3] 

    ID Term Grade Repeated 
    <int> <int> <chr> <int> 
1 260 2010  F  1 
2 203 2011  B  0 
3 204 2012  D  1 

另一種選擇是由長期安排和採取的第一個作爲如下:

df %>% arrange(ID, Term) %>% group_by(ID) %>% slice(1) 

給出相同的輸出,但在不同的牛逼爲了因arrange

Source: local data frame [3 x 4] 
Groups: ID [3] 

    ID Term Grade Repeated 
    <int> <int> <chr> <int> 
1 203 2011  B  0 
2 204 2012  D  1 
3 260 2010  F  1 
0

我們可以通過 'ID' 和 '期限'

library(data.table) 
unique(setorder(setDT(df1), ID, Term), by = "ID") 
# ID Term Grade Repeated 
#1: 203 2011  B  0 
#2: 204 2012  D  1 
#3: 260 2010  F  1 
order ING使用 uniqueby選項
相關問題