1

我为 R 生存包组织了数据,但想将其导出以在使用不同结构的 Graphpad Prism 中工作。

#Example data
Treatment<-c("A","A","A","A","A","B","B","B","B","B")
Time<-c(3,4,5,5,5,1,2,2,3,5)
Status<-c(1,1,0,0,0,1,1,1,1,1)
df<-data.frame(Treatment,Time,Status)

R生存包数据结构如下

Treatment Time Status
A           3     1
A           4     1
A           5     0
A           5     0
A           5     0
B           1     1
B           2     1
B           2     1
B           3     1
B           5     1

我需要的输出将每个处理组织为一列,然后按时间排序。然后根据其状态将每个个体记录为 1 或 0。输出应如下所示:

Time        A             B
1                         1
2                         1
2                         1
3           1             1
4           1                         
5           0             1
5           0             
5           0             

dcast() 做的事情与我想要的类似,但它总结了 Status 值并将它们合并到一个单元格中,用于所有具有匹配 Time 值的个人。

谢谢你的帮助!

4

1 回答 1

0

在尝试将 Sotos 的代码实现到我的实际数据时,我遇到了一个奇怪的问题。我得到了错误:

Error in Math.factor(var) : ‘abs’ not meaningful for factors

这很奇怪,因为 Sotos 的代码适用于该示例。当我使用 sapply() 检查示例数据框时,它给了我结果:

> sapply(df,class)
Treatment      Time    Status 
 "factor" "numeric" "numeric"  

据我所知,我的问题是我的状态变量在我的示例中被读取为数字,但在我的真实数据中被读取为整数:

> sapply(df,class)
Treatment      Time    Status 
 "factor" "numeric" "integer" 

我从 .csv 加载了我的数据,所以也许这就是导致变量调用发生变化的原因。我最终使用 as.numeric() 更改了我的状态变量,然后重新生成数据帧。

Status<-as.numeric(df$Status)
df<-data.frame(Treatment, Time, Status)

并且能够将 Sotos 的代码应用于新的数据帧。

于 2017-12-12T12:21:30.417 回答