2016-08-23 3 views
0

다음 벡터에는 월 번호가 포함됩니다.월 번호 벡터 변환

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

는 특히, 첫 번째 요소는 두 번째는 내가 X의 요소에 12을 추가하는 방법을 찾고 내년 4 월, 등 이며, 일부 년의 10 달 필요에 따라 다음과 같은 벡터 y를 얻을 수 있습니다.

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

어떻게 하시겠습니까?

답변

2

우리의 cumsum 얻을 12 곱과 추가 미만 0 diff의 출력에서의 길이의 차이를 설명하기 FALSE으로 연결하여, 논리 벡터를 생성할지 여부를 확인 diff으로 인접한 요소들을 비교하여 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

, 나는 요소의 목록을 반복 것 그리고 내가 이전보다 작은 요소를 볼 때마다, 다음과 같은 것들에 * 12를 추가 N. 처음에 n = 0이고 목록에서 이전 숫자보다 작은 숫자를 감지 할 때마다 증가합니다.

그러나 내년에는 두 번째 달이 필요할 때 어떻게 처리해야합니까? 그 다음 달의 예는 7 번째 달입니까? 같은 해의 두 번째 달과 7 번째 달이있는 경우이 사건과 사건을 구분 짓는 데 분명히 필요한 것이 있습니다. 간단한 숫자 목록만으로는 충분하지 않습니다.

+0

당신 말이 맞습니다. 년의 두 번째 벡터가 필요합니다. 인접 요소의 비교가 수행되어야하는 곳이 있습니다. – Brani

+0

이 질문에 대한 답을 제공하지 않습니다. 비평하거나 저자의 설명을 요청하려면 게시물 아래에 의견을 남겨 둡니다. - [리뷰에서] (리뷰/저품절 포스트/13429777) – user2100721

+0

@ user2100721 ​​: 동의하지 않습니다. 나는 제 1 단락에서 문제를 해결할 방법을 한 가지 방법으로 설명하려고 노력했습니다. 이것은 코드가 아니었지만 여전히 솔루션에 대한 설명이라고 생각합니다. 두 번째 단락에서 나는 그 개념과 문제의 한 가지 결함에 대해 언급했다. 우리는 제공된 데이터 만 입력으로하면 올바른 솔루션을 방지 할 수 있다고 생각했다. 제 의견으로는, 이것은 또한 마침내 누군가를 위해 정말로 효과적인 해결책을 제시 할 수있는 유용한 정보입니다. –