2013-06-05 108 views
-1

我在計算R中癌症生長的倍增時間方面存在問題。數據包含5年以上同一患者的多次掃描。然而,似乎有一些病例在一年內被多次掃描。我想計算1次掃描和最後一次掃描所有患者的節點腫塊的倍增時間。R倍增時間

我已經計算了最後一個患者節點的倍增時間,但我需要爲所有患者增加倍增時間。

代碼中,我已經使用:

Nod <- read.table("NoData270513.txt" , header = T) 


Nod$CoNo <- 10*Nod$StNo + Nod$LeNo 

length(Nod$CoNo); length(unique (Nod$CoNo)) 

Nod$CoNo <- factor(Nod$CoNo) 
Nod$CTDato <- as.Date(Nod$CTDato) 

NodTyp1 <- rep(NA, length(unique(Nod$CoNo))) 



i <- 0; i1 <- 0; i2 <- 0 

for (j in unique(Nod$CoNo)) { temp <- Nod[Nod$CoNo==j, ] 

i <- i + 1; i1 <- i2 + 1; i2 <- i2 + length(temp$CoNo) 


NodTyp1[1:20] 
vdt <- rep(NA, 1216) 

if (length(temp$Age) > 1) 
{ 
    vdt[j] <- (as.numeric(temp$CTDato[length(temp$Age)]) - as.numeric(temp$CTDato[1])) * log(2)/log((temp$SDia[length(temp$Age)]/temp$SDia[1])) 
} 
+0

你能否解釋一下'Nod'的不同列,並且在代碼中加入了一些註釋來解釋你想要做什麼?從輸入文件中看到示例數據的前幾行也很好。順便說一句,爲了格式化的原因,前面加上4個空格的代碼是很有用的。 – TooTone

回答

0

如果我這樣做是正確,你唯一需要的就是創建一個函數,數據filename,並返回你所需要的。然後只遍歷所有數據文件。

看來,這將是百通:

# declare function for one patient 
calculate.doub.time <- function(filename){ 
    Nod <- read.table(filename , header = T) 
    # ... 
    # ... 
    # return what you want 
} 

# calculate all data files 
all.data <- list.files() # assuming your working directory contains all data 
result <- sapply(all.data, calculate.doub.time) 

對不起提前如果我誤解你想要達到的目標。