2015-05-20 54 views
3

我有一個類似於以下的長數據框。我想限制數據幀在第一次觀察時年齡爲< 65歲的人。注意在研究過程中,起訴變成了65,我不想刪除她的任何數據。這是因爲她的第一個值是< 65.長數據 - 當每個人的第一個值= X時刪除所有行R

我試圖做一個函數....我認爲,如果我可以做一個指標變量,當每個人的第一個值是> 65那麼我可以排除那些行。

df$first<-ave(df$string, df$id, FUN=function(x) [1]>65) ##wrong! 



id string 
1 pat  71 
2 pat  72 
3 pat  73 
4 pat  74 
5 tom  51 
6 tom  52 
7 tom  53 
8 tom  54 
9 sue  63 
10 sue  64 
11 sue  65 
12 sue  66 
13 mary  68 
14 mary  69 
15 mary  70 
16 mary  71 
17 harry  17 
18 harry  18 
19 harry  19 
20 harry  20 

任何人都可以對此有所瞭解嗎?

回答

3

您可以使用

df[as.logical(with(df, ave(string, id, FUN= function(x) x[1] < 65))),] 

或者使用data.table

library(data.table) 
setDT(df)[, .SD[string[1L] <65] , id] 
+0

此代碼移除兩個蘇的行。我想保留所有的行。 – user2363642

+1

@ user2363642我認爲編輯前使用的是正確的。編輯後沒有檢查。請檢查更新 – akrun

+0

輝煌 - 偉大的作品。謝謝 – user2363642

相關問題