データハンドリング系の自作関数
データハンドリングするときに良く使っている自作関数をアップします。
中には自分が関数を知らないだけのものもあるかも。。
Comma <- function(Number){
#---数値をカンマ区切りにする(12桁まで対応)
if(nchar(Number) < 4) Temp <- Number
if(nchar(Number) == 4) Temp <- paste(substr(Number, 1, 1), ",", substr(Number, 2, 4), sep = "")
if(nchar(Number) == 5) Temp <- paste(substr(Number, 1, 2), ",", substr(Number, 3, 5), sep = "")
if(nchar(Number) == 6) Temp <- paste(substr(Number, 1, 3), ",", substr(Number, 4, 6), sep = "")
if(nchar(Number) == 7) Temp <- paste(substr(Number, 1, 1), ",", substr(Number, 2, 4), ",", substr(Number, 5, 7), sep = "")
if(nchar(Number) == 8) Temp <- paste(substr(Number, 1, 2), ",", substr(Number, 3, 5), ",", substr(Number, 6, 8), sep = "")
if(nchar(Number) == 9) Temp <- paste(substr(Number, 1, 3), ",", substr(Number, 4, 6), ",", substr(Number, 7, 9), sep = "")
if(nchar(Number) == 10) Temp <- paste(substr(Number, 1, 1), ",", substr(Number, 2, 4), ",", substr(Number, 5, 7), ",", substr(Number, 8, 10), sep = "")
if(nchar(Number) == 11) Temp <- paste(substr(Number, 1, 2), ",", substr(Number, 3, 5), ",", substr(Number, 6, 8), ",", substr(Number, 9, 11), sep = "")
if(nchar(Number) == 12) Temp <- paste(substr(Number, 1, 3), ",", substr(Number, 4, 6), ",", substr(Number, 7, 9), ",", substr(Number, 10, 12), sep = "")
if(nchar(Number) > 12) Temp <- Number
Temp
}
WideVar <- function(UseVar){
#---横並びにする関数(WideVarDataの中で使う)
for(i in 1:length(UseVar)){
if(i == 1) Output <- paste("1.", UseVar[1], sep="")
if(i != 1) Output <- paste(Output, " ", i, "." , UseVar[i], sep="")
}
Output
}
WideVarData <- function(UseVar2, UseID, Names = ""){
#---UseID毎にNamesの名前を付けて横並びにする
Temp <- gsub("NA", "", tapply(UseVar2, UseID, WideVar))
Temp <- data.frame(Temp, ID = names(Temp))
names(Temp) <- Names
Temp
}
Seireki <- function(UseVar){
#---日付の和暦を西暦に変換する
Temp <- ifelse(UseVar < 2000000, 18670000 + UseVar - 1000000,
ifelse(UseVar < 3000000, 19110000 + UseVar - 2000000,
ifelse(UseVar < 4000000, 19250000 + UseVar - 3000000,
19880000 + UseVar - 4000000)))
Temp
}
Sort <- function(UseData, SortVar, Rev=1){
#---昇順
if(Rev == 1) SortList <- order(SortVar)
#---降順
if(Rev == 2) SortList <- rev( order(SortVar) )
UseData[SortList, ]
}
ExtractVector <- function(UseData, ExVar){
#---ベクトルの状態でExVar毎に最も一番上の値を抜粋する
Seq <- sequence(table(ExVar))
UseData[Seq == 1]
}
ExtractData <- function(UseData, ExVar){
#---データの状態でExVar毎に最も一番上の値を抜粋する
Seq <- sequence(table(ExVar))
UseData[Seq == 1, ]
}

