r-statistics-fanの日記

統計好きの現場の臨床医の覚書のようなもの

Rのデータフレームをブログ用にテキスト化してコピペで読み込めるようにする

1年生存率と5年生存率 - 驚異のアニヲタ社会復帰への道

に触発されて、平均寿命とか計算したくなった。

平均寿命といえば

生存曲線下面積RMST(Restricted mean survival time)~比例ハザード性が仮定できない生存曲線での代替手法 - r-statistics-fanの日記 にも通じるものがある。無限大時間までやれば丁度mean survial timeだと思う。

しかし、どうにもデータの読み込みが面倒だ。

そこで、任意のデータフレームをブログ用にそのままコンソールにコピペできるTXT化する。

 

df2txt <- function(new.data = "dat", dat = data){ #新しく作るdata, txt化するデータ
nr <- nrow(dat)
nc <- ncol(dat)
cn <- colnames(dat)
cat(new.data, "<- data.frame(numeric(", nr, "))\n")
for (i in 1:nc){
cat(paste(new.data, "$", cn[i], "=", "c(", paste(dat[,i], collapse=","), ")\n"))
}
cat(new.data, "<-", new.data, "[,-1]\n")
}

#すでにdatというデータフレームがあるとする

#これをdat2の形で出力する

 

df2txt("dat2", dat)

 

以下が出力されるんのでこれをコピペする

dat2 <- data.frame(numeric( 21 ))
dat2 $ age = c( 0,5,10,15,20,25,30,35,40,45,50,55,60,65,70,75,80,85,90,95,100 )
dat2 $ death = c( 4102,655,590,1802,3370,4170,5952,7469,10238,15754,28964,49579,62258,80829,120825,159362,174185,165385,127573,50503,9578 )
dat2 $ death_per_100k = c( 72.3,10.4,9.6,28,44.5,50.7,59.6,81.3,128.5,201.6,316.5,474.9,720,1045.2,1729.3,2953,4895.9,8626.9,14694.7,22969.8,35655.2 )
dat2 <- dat2 [,-1]