r - 带ddply函数的频率表

标签 r algorithm

ID<-c("R1","R2","R2","R3","R3","R4","R4","R4","R4","R3","R3","R3","R3","R2","R2","R2","R5","R6")
event<-c("a","b","b","M","s","f","y","b","a","a","a","a","s","c","c","b","m","a")
df<-data.frame(ID,event)

如何修改下面的代码来获取此表。 2-如何获得每个频率元素的频率平均值?例如:a 的频率平均值为 1+3+1+1/4。

ddply(df,.(ID),summarise,N=sum(!is.na(ID)),frequency=length(event))

ID  N   Number-event-level  levels       frequency
R1  1      1                 a             a=1
R2  5      2                 b,c         b=3,c=2
R3  6      3                 M,a,s       M=1,a=3,s=2
R4  4      4                 f,y,b,a    f=1,y=1,b=1,a=1
R5  1      1                 m             m=1
R6  1      1                 a             a=1 

最佳答案

这是第一个问题的答案:

ddply(df,.(ID),summarise,
      N=length(event),
      Number.event.level=length(unique(event)),
      levels=paste(sort(unique(event)),collapse=","),
      frequency=paste(paste(sort(unique(event)),table(event)[table(event)>0],sep="="),collapse=","))
#   ID N Number.event.level  levels       frequency
# 1 R1 1                  1       a             a=1
# 2 R2 5                  2     b,c         b=3,c=2
# 3 R3 6                  3   a,M,s     a=3,M=1,s=2
# 4 R4 4                  4 a,b,f,y a=1,b=1,f=1,y=1
# 5 R5 1                  1       m             m=1
# 6 R6 1                  1       a             a=1

对于你的第二个问题,你似乎想得到频率大于0时的平均频率。如果是这种情况,你可以这样做:

apply(table(df),2,function(x) mean(x[x>0]))
#   a   b   c   f   m   M   s   y 
# 1.5 2.0 2.0 1.0 1.0 1.0 2.0 1.0 

更新

如果您想为第三个变量的每个级别执行最后一部分,并且您仍想使用 ddply(),您可以执行以下操作:

df1 <- rbind(df,df)
df1$cat <- rep(c("a","b"),each=nrow(df))

ddply(df1,.(cat),function(y) apply(table(y),2,function(x) mean(x[x>0])))
#   cat   a b c f m M s y
# 1   a 1.5 2 2 1 1 1 2 1
# 2   b 1.5 2 2 1 1 1 2 1

关于r - 带ddply函数的频率表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34686805/

相关文章:

r - Surxfit是否等效于R中的Coxme?

每周数据的 R 时间序列绘图

c - 求截断至 k 位小数的小数值

algorithm - 无线节点发现

javascript - 通过在 Shiny App 服务器部分创建的 jQuery UI 元素访问

python - 来自 rpy2 的个人库中的引用包

r - 使用 rhighcharts 在 y 轴上绘制百分比?

java - 选择排序比较和交换已经排序的列表

计算形式 1/r 总和为 1 的 k 个分数的算法

javascript - 如何创建一个尽可能低的变量?