我有一個非常大的數據框,我想要保存一個基於某個矢量子集的子集。總之我有這樣的事情:基於矢量子集索引數據幀
> id<-c("ID1","ID2","ID2","ID3","ID4","ID4","ID4","ID4","ID4")
> status<-c("flag","flag","none","none","flag","flag","flag","none","flag")
> misc1ofmany<-c("etc1","etc2","etc3","etc4","etc5","etc6","etc7","etc8","etc9")
> df = data.frame(id, status, misc1ofmany) ; df
id status misc1ofmany
1 ID1 flag etc1
2 ID2 flag etc2
3 ID2 none etc3
4 ID3 none etc4
5 ID4 flag etc5
6 ID4 flag etc6
7 ID4 flag etc7
8 ID4 none etc8
9 ID4 flag etc9
我想有一個已標記ID的所有行,包括它們的非標記的會話。現在我試圖通過grep獲取其他ID的索引,並將其插入新的df中。其實我寫了這一點,我想通了,grepl可能是比較容易的工作:
> flaggedIDs <- unique(as.vector(df$id[grep("flag",df$status)]))
> flaggedIDs.allStats.Index <- mapply(grepl,df$id,MoreArgs=list(x=flaggedIDs))
> flaggedIDs.allStats.Index
[,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9]
[1,] TRUE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
[2,] FALSE TRUE TRUE FALSE FALSE FALSE FALSE FALSE FALSE
[3,] FALSE FALSE FALSE FALSE TRUE TRUE TRUE TRUE TRUE
但我只是想在這裏:
> flaggedIDsdf <- df[flaggedIDs.allStats.Index] ; flaggedIDsdf
id status misc1ofmany
1 ID1 flag etc1
2 ID2 flag etc2
3 ID2 none etc3
4 ID4 flag etc5
5 ID4 flag etc6
6 ID4 flag etc7
7 ID4 none etc8
8 ID4 flag etc9
我覺得這不是我應該更簡單我是這樣做的,但是我已經嘗試了很多可能性來解決這個問題無濟於事。寫出這個問題幫助我成爲了一個更清晰/更簡單的問題(看起來我現在只是缺少一個步驟),但現在我也想知道是否有更有效的方法來解決這個問題。
很優雅!謝謝你的回答! – stites