R 将观察数计数到数据帧中

R 将观察数计数到数据帧中,r,dataframe,frequency,R,Dataframe,Frequency,我想在dataframe中创建一个新列,该列表示特定组的观察数。 我有一个手术程序HRG。代码和多个执行该程序的顾问。代码和患者的住院天数 使用 sourceData2$meanvalue<-with(sourceData2,ave(LengthOfStayDays., HRG.Code, Consultant.Code FUN=mean)) 我可以得到一个新的列meanvalue,它显示每个咨询师每次手术的平均住院时间。 这正是我需要的。然而,我也想知道每个顾问在同一数据框中作为一个新

我想在dataframe中创建一个新列,该列表示特定组的观察数。 我有一个手术程序HRG。代码和多个执行该程序的顾问。代码和患者的住院天数

使用

sourceData2$meanvalue<-with(sourceData2,ave(LengthOfStayDays., HRG.Code, Consultant.Code FUN=mean))
我可以得到一个新的列meanvalue,它显示每个咨询师每次手术的平均住院时间。 这正是我需要的。然而,我也想知道每个顾问在同一数据框中作为一个新列执行的每个程序的发生次数

我如何生成这个数量的观察结果。似乎没有“乐趣=观察”或“乐趣=频率”功能

您可以尝试:

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`
数据
如果您提供sourceData2并显示所需的输出会更容易
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")