2017-01-10 38 views
0

我的第一data.frame結構如下:獲得的行數的值之前,基於條件

structure(list(Trial = c("Left - 180 degrees", "Left - 300 degrees", 
"Left - 60 degrees", "Right - 180 degrees", "Right - 300 degrees", 
"Right - 60 degrees", "Left - 180 degrees", "Left - 300 degrees", 
"Left - 60 degrees", "Right - 180 degrees", "Right - 300 degrees", 
"Right - 60 degrees"), Region = c("Hamstring", "Hamstring", 
"Hamstring", "Hamstring", "Hamstring", "Hamstring", "Quad", "Quad", 
"Quad", "Quad", "Quad", "Quad"), PeakPower = c(118, 90, 
156, 105, 90, 140, 146, 111, 247, 186, 
133, 270)), .Names = c("Trial", "Region", "PeakPower" 
), row.names = c(NA, -12L), class = "data.frame") 

我希望定位每個PeakPower值,根據下面的另一個數據幀TrialRegion,稱爲RawData。我也希望計算出達到PeakPower的時間(每行= 1秒)。這只是0和每個PeakPower值之間的行數。例如:

PeakPower <- c(0,0,0,0,3,5,8,19,20,0,0,0,0,0,60,65,88,90,94,99,100,105,107,118,114,100) 
Trial <- c("Left - 180 degrees") 
Region <- c("Hamstring") 
RawData <- data.frame(cbind(PeakPower, Trial, Region)) 

到達PeakPower爲左邊的時間 - 180度試驗和膕繩區域將是10行或10秒。

如何在R中完成此操作?

謝謝。

+0

@HubertL進入Excel和手動調用出來!我想知道如何在R中做到這一點,以實現自動化和加速流程。 – user2716568

+0

在你的第二個數據集中,區域是「左 - 180度」,而在第一個區域是「腿筋」......你能否試着澄清你擁有什麼和你想要什麼? – HubertL

+0

@HubertL編輯。道歉 - 謝謝你的迴應。 – user2716568

回答

1

隨着包dplyr

data_frame(PeakPower, Trial, Region) %>% 
    group_by(Trial,Region) %>% 
    mutate(Max=which.max(PeakPower)) %>% 
    filter(row_number()<=Max) %>% 
    arrange(desc(row_number()))%>% 
    mutate(Min=which.min(PeakPower)) %>% 
    filter(row_number()<Min) %>% 
    summarise(PeakPower=max(PeakPower), Time=n()) %>% 
    ungroup 

# A tibble: 1 × 4 
       Trial Region PeakPower Time 
       <chr>  <chr>  <dbl> <int> 
1 Left - 180 degrees Hamstring  118 10