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 = "")