Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- # 部品
- split_gyymmdd <- function (gyymmdd) {
- # "4290121" --> c("4", "29", "01", "21")
- g = substr (gyymmdd, 1, 1)
- yy = substr (gyymmdd, 2, 3)
- mm = substr (gyymmdd, 4, 5)
- dd = substr (gyymmdd, 6, 7)
- return (c(g, yy, mm, dd))
- }
- wareki2seireki <- function (gyymmdd) {
- # gyymmdd --> yyyymmdd
- x = split_gyymmdd (gyymmdd)
- g = x[1]
- yy = as.integer (x[2])
- mm = x[3]
- dd = x[4]
- yyyy_i = switch (g,
- "1" = yy + 1867,
- "2" = yy + 1911,
- "3" = yy + 1925,
- "4" = yy + 1988
- )
- yyyy = as.character (yyyy_i)
- yyyymmdd = paste (yyyy, mm, dd, sep="")
- return (yyyymmdd)
- }
- # 値確認
- is_7digits <- function (str) {
- # "1234567" --> TRUE
- # "1 3 5 7" --> FALSE
- trimmed_str = gsub ("[[:blank:]]", "", str)
- return (nchar (trimmed_str) == 7)
- }
- is_valid_g <- function (gyymmdd) {
- # g(元号)が有効な値 --> TRUE
- g = as.integer (split_gyymmdd (gyymmdd)[1])
- return (1 <= g && g <= 4)
- }
- is_valid_gyy <- function (gyymmdd) {
- # g(元号)に対するyy(年)が有効な値 --> TRUE
- x = split_gyymmdd (gyymmdd)
- g = x[1]
- yy = as.integer (x[2])
- result = switch (g,
- "1" = (1 <= yy && yy <= 45),
- "2" = (1 <= yy && yy <= 15),
- "3" = (1 <= yy && yy <= 64),
- "4" = (1 <= yy && yy <= 29)
- )
- return (result)
- }
- is_valid_date <- function (yyyymmdd) {
- # yyyymmdd(西暦) が日付型として扱える --> TRUE
- # 2/29のチェック等も可 ex.) "20170229" --> FALSE
- return (!(is.na (as.Date (yyyymmdd, format="%Y%m%d"))))
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement