【发布时间】:2014-11-05 14:43:20
【问题描述】:
我需要为每个年龄组计算一个身份号码的众数。让我们假设下表:
library(data.table)
DT = data.table(age=c(12,12,3,3,12),v=rnorm(5), number=c("122","125","5","5","122"))
所以我创建了一个函数:
g <- function(number) {
ux <- unique(number)
ux[which.max(tabulate(match(number, ux)))]
}
H<-function(tabla){data.frame(MODA=g, count=nrow(tabla))}
clasif_edad1<-ddply(DF,.(age), H)
View(clasif_edad1)
但我得到以下错误:
Error: arguments imply differing number of rows: 0, 1
输出应该是:
age v number moda
12 0,631152199 122 122
12 0,736648714 125 122
3 0,545921527 5 5
3 0,59336284 5 5
12 0,836685437 122 122
不知道是什么问题。
谢谢
【问题讨论】:
-
你的功能有点不清楚。你能显示你想要的输出吗?同样,没有任何理由将
data.table转换为data.frame,然后使用plyr。data.table是 R 之王,按原样使用 -
如果你想让我们重现你的专栏
v,你需要使用set.seed,因为rnorm每次运行都会生成一个随机种子