我已經寫了一些代碼,幫助解決了以前回答的問題。最初,我有這個代碼:如何在R中的相同函數中創建多個過濾器?
getT <- function(df, ID, Number){
df %>%
group_by(ID, Number) %>%
mutate(Distance = finish - begin) %>%
select(-begin,-finish,-symbols) %>%
nest() %>%
mutate(data = map(data, ~ filter(.x, Distance == max(Distance)))) %>%
unnest()
}
getallT <- as.data.frame(getT(df))
getTID <- function(df, ID) {
subset(x = getallT, subset = (ID))
}
這給了這樣的輸出:
ID Number Time Distance
33 1 2.00 870
33 2 1.98 859
33 3 0.82 305
33 4 2.02 651
33 5 2.53 502
我希望通過Time
對其進行過濾,所以我用這個代碼(多虧了後下):
getHLN <- function(df, ID) {
getallT %>% filter (ID ==id & !between(Time, 1.50, 2.10))
}
現在給出這個輸出:
ID Number Time Distance
1 33 3 0.82 305
2 33 4 2.02 651
3 33 5 2.53 502
但現在我遇到了一個問題,所以現在我仍然想知道如何: A.過濾出數字4 & 5,以便我可以創建一個單獨的函數與不同的Time
過濾器。稍後創建另一個不同的功能,將前兩個函數合併爲一個。 或 B.在相同的功能中創建一個不同的Time
過濾器專門用於編號4 & 5。
我試過A,通過使用filter (getallT, Number >= 3) %>%
但是不起作用。如果可能的話,我寧願和B一起去。所以像... 對於ID號1-3:過濾器(!之間(時間,1,2)) 對於ID號4-5:在同一個函數內過濾(!之間(時間1.5,2.3))。 我一直在嘗試一些事情在過去一天,但不斷收到錯誤信息,如Error in filter_impl(.data, quo) : Evaluation error: operations are possible only for numeric, logical or complex types.
我一直在嘗試什麼在這裏,但不能做一些事情寫,所以需要一些見解! http://genomicsclass.github.io/book/pages/dplyr_tutorial.html
下面是一個例子集
df <- data.frame(ID=rep(33,5),
Number=1:5,
Time=c(2.00,1.98,0.82,2.02,2.53),
Distance=c(870,859,305,651,502))
任何幫助將非常感激。
您能否提供一個可重複使用的小例子 – akrun
請問您如何提出包括可重現數據集的問題。 https://開頭計算器。com/questions/5963269/how-to-make-a-r-re-reproducible-example – cmaher
我確實有忘記添加的壞習慣! Woops,謝謝你的提醒! –