Advertisement
Guest User

Untitled

a guest
Jan 21st, 2017
74
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.58 KB | None | 0 0
  1. # 部品
  2. split_gyymmdd <- function (gyymmdd) {
  3. # "4290121" --> c("4", "29", "01", "21")
  4. g = substr (gyymmdd, 1, 1)
  5. yy = substr (gyymmdd, 2, 3)
  6. mm = substr (gyymmdd, 4, 5)
  7. dd = substr (gyymmdd, 6, 7)
  8.  
  9. return (c(g, yy, mm, dd))
  10. }
  11.  
  12. wareki2seireki <- function (gyymmdd) {
  13. # gyymmdd --> yyyymmdd
  14. x = split_gyymmdd (gyymmdd)
  15. g = x[1]
  16. yy = as.integer (x[2])
  17. mm = x[3]
  18. dd = x[4]
  19.  
  20. yyyy_i = switch (g,
  21. "1" = yy + 1867,
  22. "2" = yy + 1911,
  23. "3" = yy + 1925,
  24. "4" = yy + 1988
  25. )
  26. yyyy = as.character (yyyy_i)
  27.  
  28. yyyymmdd = paste (yyyy, mm, dd, sep="")
  29. return (yyyymmdd)
  30. }
  31.  
  32. # 値確認
  33. is_7digits <- function (str) {
  34. # "1234567" --> TRUE
  35. # "1 3 5 7" --> FALSE
  36. trimmed_str = gsub ("[[:blank:]]", "", str)
  37. return (nchar (trimmed_str) == 7)
  38. }
  39.  
  40. is_valid_g <- function (gyymmdd) {
  41. # g(元号)が有効な値 --> TRUE
  42. g = as.integer (split_gyymmdd (gyymmdd)[1])
  43. return (1 <= g && g <= 4)
  44. }
  45.  
  46. is_valid_gyy <- function (gyymmdd) {
  47. # g(元号)に対するyy(年)が有効な値 --> TRUE
  48. x = split_gyymmdd (gyymmdd)
  49. g = x[1]
  50. yy = as.integer (x[2])
  51.  
  52. result = switch (g,
  53. "1" = (1 <= yy && yy <= 45),
  54. "2" = (1 <= yy && yy <= 15),
  55. "3" = (1 <= yy && yy <= 64),
  56. "4" = (1 <= yy && yy <= 29)
  57. )
  58. return (result)
  59. }
  60.  
  61. is_valid_date <- function (yyyymmdd) {
  62. # yyyymmdd(西暦) が日付型として扱える --> TRUE
  63. # 2/29のチェック等も可 ex.) "20170229" --> FALSE
  64. return (!(is.na (as.Date (yyyymmdd, format="%Y%m%d"))))
  65. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement