2016-08-23 5 views
0

次のベクトルは月の数字を含みます。私は、xの要素に12を追加する方法を探しています月の数字のベクトルの変換

x <- c(10,4,10,12,1,3,6,7,9,11,12,4,7,8) 

最初の要素は、いくつかの年の10番目の月である。具体的に、第2のなど、来年の4月です

y <- c(10,16,22,24,25,27,30,31,33,35,36,40,43,44) 

がどのようにあなたがそれを行うことを示唆している:私はこのようなベクトルyを得るように、必要に応じて?

答えて

2

我々は論理ベクトルを作成diffの出力における長さの差を考慮するためにFALSEと連結し、cumsumを取得し、12を掛けるとに追加する0未満であるか否かを確認し、diffと隣接する要素を比較することができあなたは、私は要素のリストを反復処理したいと私は以前のものよりも小さい要素を見るたびに、以下のものに12を追加し、N *、提供された例に基づいて、X

x+ cumsum(c(FALSE, diff(x)< 0)) *12 
#[1] 10 16 22 24 25 27 30 31 33 35 36 40 43 44 
2

。最初はn = 0で、リスト内の前の数字よりも小さい数字を検出するたびに増分されます。

私の質問は、特定の年から2番目の月が必要なときにそれ以外のものは何も処理しませんが、次の年からたとえば7番目の月ですか?あなたは、同じ年の2ヶ月目と7ヶ月目には、このケースとケースを区別するために何かが必要です。シンプルな数字のリストは、私が恐れているほど十分ではありません。

+0

あなたは正しいです。数年の第2のベクトルが必要です。隣接する要素の比較が行われなければならない場所があります。 – Brani

+0

これは質問への答えを提供しません。批評をしたり、著者の説明を求めるには、投稿の下にコメントを残してください。 - [レビューより](/レビュー/低品質の投稿/ 13429777) – user2100721

+0

@ user2100721:私は同意しません。私は第1段落の問題をどのように解決するかを説明しようとしました。これはコードではありませんでしたが、私の解決策の説明と思います。 2番目のパラグラフでは、私が入力として提供されたデータだけを持っていれば、正しい解決策ができないと思った、そのコンセプトと問題の1つの欠陥を述べました。私の意見では、これは最終的に誰かのために本当に有効な解決策を見出すために役立つ情報です。 –

関連する問題