Я подозреваю, что у R есть встроенный метод для этого, но я новичок в программировании и пытался выяснить, как рассчитать дни между датами вручную. Вот мой код:Вычислите дни между датами вручную
isLeapYear <- function(year) {
if (year %% 400 == 0) {
return (TRUE)
}
if (year %% 100 == 0) {
return (FALSE)
}
if (year %% 4 == 0) {
return (TRUE)
}
else{ return (FALSE)}
}
daysInMonth <- function(year,month){
if (month == 1 | month == 3| month == 5 | month == 7 | month == 8 | month == 10 | month == 12) {
return (31)
}
else if (month == 2){
if (isLeapYear(year)){
return (29)
}
else {return (28)}
}
else {return (30)}
}
nextDay <- function(year, month, day){
if (day < daysInMonth(year,month)){
return (list(year, month, day + 1))
}
else{
if (month == 12){
return (list(year + 1, 1, 1))
}
else{return (list(year, month + 1, 1))}
}
}
dateIsBefore <- function(year1, month1, day1, year2, month2, day2){
if (year1 < year2){
return(TRUE)
}
if (year1 == year2){
if (month1 < month2){
return(TRUE)
}
if (month1 == month2){
return (day1 < day2)
}
}
return (FALSE)
}
daysBetweenDates <- function(year1, month1, day1, year2, month2, day2){
days <- 0
while (dateIsBefore(year1, month1, day1, year2, month2, day2)){
result = nextDay(year1,month1,day1)
year1 = result[1]
month1 = result[2]
day1 = result[3]
days = days+1
}
return (days)
}
Я написал код, чтобы определить количество дней между двумя датами, используя python. Теперь я пытаюсь преобразовать его в R для другого задания, которое я делаю. Когда я запускаю каждую индивидуальную функцию, они, похоже, работают нормально. Когда я называю daysBetweenDates(2012,1,1,2012,2,28)
я получаю следующее сообщение об ошибке:
Error in day + 1 : non-numeric argument to binary operator
Все, что вам действительно нужно, это '-', например. 'as.Date ('2015-01-01') - as.Date ('2013-01-01')' – alistaire
Я понял, что у r есть встроенный метод для этого, но я новичок в программировании и пытался как практика. –