2016-12-19 17 views
0

値がゼロに戻る前に、列の最後の値を見つけようとしています。イベントの発生間隔を計測した列があり、最後の値を0より前にサブセット化したいと考えています。ここにコードのスニペットがあります。別の列に基づく合計

Phase Duration 
1  0 
1  1.37 
1  2.9 
1  3.5 
2  0 
2  1.09 
2  3.92 
3  0 
3  0.23 
4  0 
4  0.59 
4  0.93 

だから私の所望の出力が

Phase TotalDuration 
1  3.5 
2  3.92 
3  0.23 
4  0.93 

だろう(これは、データフレームである)私は単純に値を合計すると、働くだろうと思ったが、0.93 + 0.59は、明らかに0.93

+2

、期待される出力が「相」でグループ化して取得することによって得たことができます各グループの最後の行、すなわち 'library(dplyr);あなたが望むものでない場合は、より良い例で投稿を更新してください – akrun

答えて

1

私が正しく理解していれば、これはあなたが

dat <- data.frame(Phase=c(1,1,1,1,2,2,2,3,3,4,4,4), 
        Duration=c(0,1.37,2.9,3.5,0,1.09,3.92,0,0.23,0,0.59,0.93)) 

library(dplyr) 
dat %>% 
    group_by(Phase) %>% 
    summarise(TotalDuration=max(Duration)) 

出力の後にあるものです:あなたの例から

Source: local data frame [4 x 2] 

    Phase TotalDuration 
    <dbl>   <dbl> 
1  1   3.50 
2  2   3.92 
3  3   0.23 
4  4   0.93 
0

数よりも大きく、オプション。 @ akrunさんのコメントから

dat <- data.frame(
    Phase=c( 1, 1, 1, 1, 2, 2, 2, 3, 3, 4, 4, 4), 
    Duration=c( 0, 1.37, 2.9, 3.5, 0, 1.09, 3.92, 0, 0.23, 0, 0.59, 0.93) 
) 
  1. :あなたはmaxを仮定することができない場合、

    aggregate(Duration ~ Phase, data = dat, FUN = max) 
    
  2. ベースR:

    library(dplyr) 
    dat %>% 
        group_by(Phase) %>% 
        slice(n()) 
    # Source: local data frame [4 x 2] 
    # Groups: Phase [4] 
    # Phase Duration 
    # <int> <dbl> 
    # 1  1  3.50 
    # 2  2  3.92 
    # 3  3  0.23 
    # 4  4  0.93 
    
  3. ベースR、あなたは常にmax作品を取ることができる場合代わりに「最後」を使用する必要があります:

    今後の参考のために
    # optional use of a helper-function ... dplyr::last works too 
    last1 <- function(x) tail(x, n = 1) 
    aggregate(Duration ~ Phase, data = dat, FUN = last1) 
    

、あなたの質問にミスという名前であり、それはもう少し詳細を持って立つことができます:どの時点で

  • はあなたの「合計」は何でしょうか?
  • StackOverflowで "variable by group"を含むRのものを検索した場合は、試したコードを
  • に含めてください。投稿の上位カップルが役に立つ可能性があります。
+0

私が合計について話し合ったとき、私は最初にそれがうまくいくと思った方法を説明していましたしかし明らかにそうではありません。ありがとう、あなたがボード上で言ったすべてを取る! – useR

+0

入手しました。 (私が理解できないことは、akrunの回答コメントと私の答えの後に@ Swapnilの回答がどのように提出されたか、いずれも革新的なものは何も提示していないことです)が受け入れられました。 – r2evans

関連する問題