Разделить график на срок менее двух лет [дубликат]

Просто используя строки, для меня это хорошее решение, меньше проблем с mysql. Обнаруживает текущий формат и при необходимости меняет его, это решение предназначено только для испанского / французского формата и английского формата без использования функции php datetime.

class dateTranslator {

 public static function translate($date, $lang) {
      $divider = '';

      if (empty($date)){
           return null;   
      }
      if (strpos($date, '-') !== false) {
           $divider = '-';
      } else if (strpos($date, '/') !== false) {
           $divider = '/';
      }
      //spanish format DD/MM/YYYY hh:mm
      if (strcmp($lang, 'es') == 0) {

           $type = explode($divider, $date)[0];
           if (strlen($type) == 4) {
                $date = self::reverseDate($date,$divider);
           } 
           if (strcmp($divider, '-') == 0) {
                $date = str_replace("-", "/", $date);
           }
      //english format YYYY-MM-DD hh:mm
      } else {

           $type = explode($divider, $date)[0];
           if (strlen($type) == 2) {

                $date = self::reverseDate($date,$divider);
           } 
           if (strcmp($divider, '/') == 0) {
                $date = str_replace("/", "-", $date);

           }   
      }
      return $date;
 }

 public static function reverseDate($date) {
      $date2 = explode(' ', $date);
      if (count($date2) == 2) {
           $date = implode("-", array_reverse(preg_split("/\D/", $date2[0]))) . ' ' . $date2[1];
      } else {
           $date = implode("-", array_reverse(preg_split("/\D/", $date)));
      }

      return $date;
 }

USE

dateTranslator::translate($date, 'en')
5
задан Julius Vainora 8 September 2012 в 13:55
поделиться

1 ответ

Ошибка довольно понятна. Ваш временной ряд, однако вы его создали, не имеет сезонных циклов или менее 2 сезонных циклов. (Это может не указывать, что данные являются не сезонными, возможно, вы неправильно создали samplets.) Например, я могу воспроизвести ошибку, имея временные ряды с 7 квартальными наблюдениями, что явно не два полных полных сезонных цикла:

R> TS <- ts(1:7, frequency = 4)
R> decompose(TS)
Error in decompose(TS) : time series has no or less than 2 periods
R> TS
  Qtr1 Qtr2 Qtr3 Qtr4
1    1    2    3    4
2    5    6    7     

Аналогично, если я не укажу какую-либо субгоновую частоту (т. е. frequency = 1 в вызове ts(), создавая ваш объект временного ряда samplets [который по умолчанию]) Я получаю ту же ошибку:

R> TS <- ts(1:7)
R> decompose(TS)
Error in decompose(TS) : time series has no or less than 2 periods

В любом случае это указывает на то, что вы неправильно создали свой "ts" объект, не указав правильные аргументы frequency или deltat или у вас есть временные ряды недостаточной длины (количество лет) для покрытия двух полных сезонных циклов.

Пожалуйста, прочтите ?ts более подробно, чтобы убедиться, что вы правильно создаете samplets. Если вам нужна дополнительная помощь, опубликуйте воспроизводимый пример.

27
ответ дан Gavin Simpson 26 August 2018 в 10:35
поделиться
Другие вопросы по тегам:

Похожие вопросы: