文:日付を入力として受け取り、その日付に対応する十二支の占星術記号を返す関数を書く(Lubridate
パッケージを使用してください)。日付(例えば「8月14日」)をとり、星座を返す「lubridate」パッケージを使ってR関数を書く
問題:「12月22日」から「1月19日」の間に日付を入力したとき。それはNULL
を返します。 ymd
は、2017-12-22 UTC--2017-01-19 UTC
の代わりに2017-12-22 UTC--2018-01-19 UTC
を返す必要があります。
Date
/POSIx
データの間隔を作成する方法はありますか?
zodiac_sign <- function(input){
library(lubridate)
input <- ymd(as.character(as.Date(input,format="%B %d")))
x <- as.Date(c("March 21","April 19","April 20","May 20","May 21","June 20","June 21","July 22","July 23","August 22","August 23","September 22","September 23","October 22","October 23","November 21","November 22","December 21","December 22","January 19","January 20","February 18","February 19","March 20"),format="%B %d")
x_dateform_char <- as.character(x)
lst <- list()
for(i in seq(1,length(x_dateform_char),2)) {
lst[[i]] <- c(ymd(x_dateform_char[i]) %--% ymd(x_dateform_char[i+1]))
if(i==(length(x_dateform_char)-1)){
break
}
}
lst <- lst[!sapply(lst, is.null)]
names(lst) <-
c("Aries","Taurus","Gemini","Cancer","Leo","Virgo","Libra","Scorpio","Sagittari
us","Capricorn","Aquarius","Pisces")
lst
for(i in 1:length(lst)){
if(input %within% lst[[i]]){
sign <- names(lst)[i]
} }
sign
}
代わりに、現在のyear--のそれ以外の場合は「2月29日"問題になります: – Angelo
よく、私は後でそれを調べなければならないと思います – Onyambu
@Onyambu私は'うるう年 'が問題にならないはずの別のソリューションを追加しようとしました。 – MKR