【发布时间】:2018-01-22 09:56:41
【问题描述】:
在我的研究中,我有一个癌症患者数据集,其中包含一些临床信息,例如癌症分期和治疗等。每个患者在表格中都有一行包含这些临床信息。此外,每位患者在治疗期间的一个或几个时间点都采集了血样,具体取决于患者在诊所接受了多长时间。第一个样本来自第一次就诊,第二个样本来自第二次就诊,以此类推。
在表中,有一个名为 Sample_Time_1 的变量(即列),它是第一个样本的时间。 Sample_Time_2 具有第二个样本的时间(日期),依此类推。
但是 - 样本在实验室进行了分析,我在数据透视表中得到了结果,这意味着我有一个表格,其中每个样本都有一行,因此来自一名患者的结果显示在多行中。
例如,创建两个表:
x <- c(1,2,2,3,3,3,3,4,5,6,6,6,6,7,8,9,9,10)
y <- as.Date(c("2011-05-17","2012-06-30","2012-08-11","2011-10-15","2011-11-25","2012-01-07","2012-02-15","2011-08-13","2012-02-03","2011-11-08","2011-12-21","2012-02-01","2012-03-12","2012-01-03","2012-04-20","2012-03-31","2012-05-10","2011-12-15"), format="%Y-%m-%d", origin="1960-01-01")
z <- c(123,185,153,153,125,148,168,187,194,115,165,167,143,151,129,130,151,134)
Sheet_1 <- matrix(c(x,y,z), ncol=3, byrow=FALSE)
colnames(Sheet_1) <- c("ID","Sample_Time", "Sample_Value")
Sheet_1 <- as.data.frame(Sheet_1)
Sheet_1$Sample_Time <- y
x1 <- c(1,2,3,4,5,6,7,8,9,10)
x2 <- c(3,3,2,3,2,2,4,2,3,3)
x3 <- c(1,2,2,3,3,1,3,1,1,2)
x4 <- as.Date(c("2011-05-17","2012-06-30","2011-10-15","2011-08-13","2012-02-03","2011-11-08","2012-01-03","2012-04-20","2012-03-31","2011-12-15"), format="%Y-%m-%d", origin="1960-01-01")
x5 <- as.Date(c(NA,"2012-08-11","2011-11-25",NA,NA,"2011-12-21",NA,NA,"2012-05-10",NA), format="%Y-%m-%d", origin="1960-01-01")
x6 <- as.Date(c(NA,NA,"2012-01-07",NA,NA,"2012-02-01",NA,NA,NA,NA), format="%Y-%m-%d", origin="1960-01-01")
x7 <- as.Date(c(NA,NA,"2012-02-15",NA,NA,"2012-03-12",NA,NA,NA,NA), format="%Y-%m-%d", origin="1960-01-01")
Sheet_2 <- as.data.frame(c(1:10))
colnames(Sheet_2) <- "ID"
Sheet_2$Stage <- x2
Sheet_2$Treatment <- x3
Sheet_2$Sample_Time_1 <- x4
Sheet_2$Sample_Time_2 <- x5
Sheet_2$Sample_Time_3 <- x6
Sheet_2$Sample_Time_4 <- x7
Sheet_2$Sample_Value_1 <- NA
Sheet_2$Sample_Value_2 <- NA
Sheet_2$Sample_Value_3 <- NA
Sheet_2$Sample_Value_4 <- NA
我想将第一次从患者身上采集样本的日期的 Sample_Value 从 Sheet_1 转移到 Sheet_2$Sample_Value_1,如果有更多样本,我想将它们转移到“Sample_Value_2”列,依此类推。
我尝试过使用双 for 循环。对于 Sheet_1 中的每个患者 (=ID),我已经遍历了 Sheet_2,如果 ID 上有一个马赫数,那么我使用另一个 for 循环来查看 Sample_Time 上是否有一个马赫数,并插入(使用 if)Sample_Value。但是,我无法让它发挥作用,而且我有一种强烈的感觉,必须有更好的方法。
有什么建议吗?
【问题讨论】:
-
一个明确的问题和可用的示例数据!
标签: r pivot-table