Я хотел бы извлечь время из вектора символов [дубликата]

** Не делайте этого ( почему? ):

Цитирование стандартного документа C99, который я нашел в Интернете: «Установка индикатора положения файла для завершения -файла, как и в файле fseek (файл, 0, SEEK_END), имеет неопределенное поведение для двоичного потока (из-за возможных завершающих нулевых символов) или для любого потока с зависящей от состояния кодировкой, которая не обязательно заканчивается в начальном состоянии сдвига . **

Измените определение на int, чтобы сообщения об ошибках могли быть переданы, а затем используйте fseek () и ftell () для определения размера файла.

int fsize(char* file) {
  int size;
  FILE* fh;

  fh = fopen(file, "rb"); //binary mode
  if(fh != NULL){
    if( fseek(fh, 0, SEEK_END) ){
      fclose(fh);
      return -1;
    }

    size = ftell(fh);
    fclose(fh);
    return size;
  }

  return -1; //error
}

0
задан zx8754 18 March 2019 в 19:13
поделиться

3 ответа

Немного неясно, хотите ли вы дату или время, но если вам нужна дата, то as.Date игнорирует любой мусор после даты, поэтому:

x <- c("2018-12-13 11:00:01 EST", "2018-10-23 22:00:01 EDT")
as.Date(x)
## [1] "2018-12-13" "2018-10-23"

будет достаточно, чтобы получить Date вектор из входного вектора x. Пакеты не используются.

Если вы хотите время, то:

read.table(text = x, as.is = TRUE)[[2]]
## [1] "11:00:01" "22:00:01"

Если вы хотите кадр данных с каждой частью в отдельном столбце, то:

read.table(text = x, as.is = TRUE, col.names = c("date", "time", "tz"))
##         date     time  tz
## 1 2018-12-13 11:00:01 EST
## 2 2018-10-23 22:00:01 EDT
0
ответ дан G. Grothendieck 18 March 2019 в 19:13
поделиться

Вы можете использовать функцию as.Date и указать формат

> as.Date("2018-12-13 11:00:01 EST", format="%Y-%m-%d")
[1] "2018-12-13"

Если все значения находятся в векторе:

x = c("2018-12-13 11:00:01 EST", "2018-10-23 22:00:01 EDT", 
      "2018-11-03 14:15:00 EDT", "2018-10-04 19:30:00 EDT", 
      "2018-11-10 17:15:31 EST", "2018-10-05 13:30:00 EDT")

> as.Date(x, format="%Y-%m-%d")
[1] "2018-12-13" "2018-10-23" "2018-11-03" "2018-10-04" "2018-11-10"
[6] "2018-10-05"   
0
ответ дан NM_ 18 March 2019 в 19:13
поделиться

Я думаю, что ОП хочет извлечь время из переменной даты-времени (исходя из названия вопроса).

x <- "2018-12-13 11:00:01 EST"

as.character(strptime(x, "%Y-%m-%d %H:%M:%S"), "%H:%M:%S")
[1] "11:00:01"

Другой вариант:

library(lubridate)

format(ymd_hms(x, tz = "EST"), "%H:%M:%S")
[1] "11:00:01"
0
ответ дан Debbie 18 March 2019 в 19:13
поделиться
Другие вопросы по тегам:

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