instruction - nnh/knonc_mapping GitHub Wiki
試験名を入れる。定数(Constant)はCoding Styleに従い"k"を先頭に付けてCamelCaseで表記し、ファイルの先頭に記載
kStudyId <- "JALSG-AML201"
setwdで作業フォルダを移動し、フォルダ内のファイル名一覧をfilenamesに入れる
setwd(kStudyId)
setwd("./input/rawdata")
filenames <- list.files()
空文字""をNAに変換しながら、CP932=Shift-JISで読み込む
rawdata <- read.csv(filenames[1], as.is = T, na.strings = c(""), fileEncoding = "CP932")
作業フォルダはプロジェクトディレクトリーに戻す
setwd("../..")
空行があったので削除。is.na()はその値がNAかどうかを真偽で返す。dataframe$variableはvariableという変数名の列を示す。dataframe[a,b]は「行に対してa」と「列に対してb」という条件を満たすdataframeの要素を意味する。今は検体IDが存在する行だけを選びたいのでbに関しては無記載、但しbの直前の","は必要。
dataset <- rawdata[!is.na(rawdata$検体ID), ]
行数分のdata frame(Excelのシートのようなもの)を作成。rep(a,b)はaをb回繰り返したものという意味。nrow(c)はcの行数。
dm <- data.frame(STUDYID = rep(kStudyId, nrow(dataset)))
文字列結合はpasteで行う。
dm$USUBJID <- paste(kStudyId, dataset$検体ID, sep = "-")
分岐はifelse文(三項演算子)を使って記載する。ExcelのIF文と同じです。
三分岐
dm$ARMCD <- ifelse(is.na(dataset$寛解導入療法), "SCRNFAIL",
ifelse(is.na(dataset$地固め療法群), "INDFAIL",
paste(substr(dataset$寛解導入療法, 1, 1), substr(dataset$地固め療法群, 1, 1), sep = "-")))
二分岐
ce$CEDECOD <- ifelse(dataset$再発の有無 == "再発", "RELAPSE", NA)
シーケンシャル番号
xxSEQは症例ごとにシーケンシャル番号を作成する。先ず<-NAでカラムを作成しておかないとエラーになる。c(1:5)はc(1,2,3,4,5)を表す。uniqueは重複値を一つにしてまとめた配列を表す。
ce$CESEQ <- NA # まずカラムを作成しておかないとエラーになる
for (i in unique(ce$USUBJID)) {
ce[ce$USUBJID == i, ]$CESEQ <- c(1:nrow(ce[ce$USUBJID == i, ]))
}
保存する際に行番号は付与せず(row.names = F),NAは空文字""に変換。
setwd("./output/SDTM")
write.csv(dm, "DM.csv", row.names = F, na = "")