计算数据帧中的观察数量

时间:2014-10-05 14:11:19

标签: r dataframe frequency

我想在数据框中创建一个新列,指出特定组的观察数量 我有一个外科手术程序(HRG.Code)和执行此程序的多名顾问(Consultant.Code)以及患者在几天内的住院时间。

使用

sourceData2$meanvalue<-with(sourceData2,ave(LengthOfStayDays., HRG.Code, Consultant.Code FUN=mean))

我可以得到一个新列(平均值),显示每个程序每个顾问的平均逗留时间。 这正是我需要的。但是,我还想知道每个顾问在同一数据框架中作为新列执行的每个程序的出现次数。

如何生成此数量的观察结果。似乎没有FUN = Observations或FUN = freq功能。

1 个答案:

答案 0 :(得分:0)

您可以尝试:

tbl <- table(sourceData2[,3:2]) #gives the frequency of each `procedure` i.e. `HRG.Code` done by every `Consultant.Code`

 tbl
 #          HRG.Code
 #Consultant.Code A B C
 #              A 1 1 0
 #              B 4 2 1
 #              C 0 0 1
 #              D 1 1 1
 #              E 2 0 0

 as.data.frame.matrix(tbl) #converts the `table` to `data.frame`

如果您希望每个unique以长格式完成Consultant.Code个过程。

with(sourceData2, as.numeric(ave(HRG.Code, Consultant.Code,
                            FUN=function(x) length(unique(x))))) 
# [1] 3 3 3 2 1 3 3 3 3 1 1 3 3 3 2

数据

sourceData2 <- structure(list(LengthofStayDays = c(2L, 2L, 4L, 3L, 4L, 5L, 2L, 
4L, 5L, 2L, 4L, 2L, 4L, 4L, 2L), HRG.Code = c("C", "A", "A", 
"B", "A", "A", "B", "C", "A", "A", "C", "A", "B", "B", "A"), 
Consultant.Code = c("B", "B", "B", "A", "E", "B", "D", "D", 
"D", "E", "C", "B", "B", "B", "A")), .Names = c("LengthofStayDays", 
"HRG.Code", "Consultant.Code"), row.names = c(NA, -15L), class = "data.frame")