数据准备以显示传输中的数字

时间:2017-08-05 16:27:50

标签: r

最后我想创造漂亮的circos plots,但要到达那里我需要显示从A到B,B到C和B到A等的人数。

我的数据集:

#Generate some sample data:

proc<-sample(c("EMR","RFA","Biopsies"), 100, replace = TRUE)
#Sample dates
dat<-sample(seq(as.Date('2013/01/01'), as.Date('2017/05/01'), by="day"), 100)
#Generate 20 hospital numbers in no particular order:
Id<-sample(c("P43","P63","K52","G24","S55","D07","U87","P22","Y76","I92","P22","P02","U22415","U23","S14","O34","T62","J32","F63","T43"), 100, replace = TRUE)
df<-data.frame(proc,dat,Id)

如果我正在为Snakey情节准备数据,我会这样做:

Sankey<-dcast(setDT(df)[, if(any(proc=="EMR"|proc=="RFA")) .SD, Id], Id~rowid(Id), value.var ="proc")

这将给我一个很好的表格,显示每个时间点的每个患者的顺序。

但我想进入下一步,即找出每种不同proc类型(即“EMR”,“RFA”和“活组织检查”)之间转换的患者数量,以便我可以将它们变成一种环绕的格式,即(频率在这里组成)

origin   destination frequency
EMR       RFA           14
EMR       Biopsies      4
EMR       EMR           10
RFA       RFA           24
RFA       Biopsies      42
RFA       EMR           1
Biopsies  RFA           3
Biopsies  Biopsies      6
Biopsies  EMR           16

或者我想另一种显示它的方法是

             destination
               EMR            RFA      Biopsies
origin
 EMR           10             14         4
 RFA            1             24         42
 Biopsies      16             3          6

2 个答案:

答案 0 :(得分:1)

我会将a.each_with_index { |n, i| print i == a.size - 1 ? "#{n}\n" : "#{n} " } 用于该任务,分析的核心是dplyr函数来检索每个患者的最后位置,以及lag函数来计算病例。

整个分析将如下进行:


summarise

答案 1 :(得分:0)

我设法使用一种狡猾的方法来实现这一点,基本上将所有列粘贴在一起,然后使用stringr包分离然后制表。

\\.