像dcast但没有数据总和

时间:2017-12-12 10:37:07

标签: r dataframe survival

我为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值并将它们合并到一个单元格中,用于具有匹配时间值的所有个体。

感谢您的帮助!

1 个答案:

答案 0 :(得分:0)

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

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

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

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

就我所知,我的问题是我的Status变量在我的示例中被读为数字,但在我的实际数据中是一个整数:

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

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

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

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