2015-07-21 3 views
0

У меня есть матрица с отдельными столбцами за год (ГГГГ), юлианский день и время (HHMM). Я хотел бы добавить вектор-столбец с полной григорианской датой («MM/DD/YYYY»), а также вектор-столбец, который даст мне прошедшее время в днях. Как я могу это сделать?
Чтобы быть ясным, я имею в виду эти юлианские дни: http://landweb.nascom.nasa.gov/browse/calendar.html Спасибо за помощь.Как конвертировать юлианский день и год в формат даты и вычислять прошедшее время в R

C7 <- read.table(text="Year Day Time  
2015 193 915 
2015 193 930 
2015 195 1400 
2015 195 1415", header=T) 

Я хотел бы добавить эти две колонки:

Year Day Time  Date  Elapsed Time (Days)  
2015 193 915 07/12/2015  0.00  
2015 193 930 07/12/2015  0.01  
2015 195 1400 07/14/2015  2.20  
2015 195 1415 07/14/2015  2.21  
+3

Пожалуйста, создайте [воспроизводимый пример] (http://stackoverflow.com/questions/5963269/how-to-make-a-great-r-reproducible-example). Включите некоторые вводные данные образца и покажите желаемый результат. Гораздо легче помочь в этом. – MrFlick

+0

Спасибо за редактирование. Не удалось выяснить, как отформатировать его таким образом. Как вы можете сказать, я совершенно новый для Р. – user507

ответ

2

Во-первых, я бы преобразовать значения в соответствующие значения даты/времени POSIXt. Здесь я вставить все, чтобы строки, отделяя часы и минуты, используя некоторые математические

pdates <- with(C7, strptime(paste(Year,Day,Time %/% 100, Time %% 100), "%Y %j %H %M")) 

Теперь мы можем получить желаемые столбцы понижающего приведения к дате и используя difftime().

format(pdates, "%m/%d/%Y") 
# [1] "07/12/2015" "07/12/2015" "07/14/2015" "07/14/2015" 

round(c(difftime(pdates, min(pdates), units="days")),2) 
# [1] 0.00 0.01 2.20 2.21 
+0

Это старый вопрос, но мне было интересно, есть ли способ, которым я могу использовать предложенный выше код, но с установленной минимальной датой при расчете истекшего времени? Мне нужно использовать минимальную дату, которая еще не находится в фрейме данных (10/12/2014 в 12:00). Спасибо за вашу помощь. – user507