Fre*_*red 6 r frequency count data-manipulation data-management
限定:
df1 <-data.frame(
id=c(rep(1,3),rep(2,3)),
v1=as.character(c("a","b","b",rep("c",3)))
)
Run Code Online (Sandbox Code Playgroud)
ST
> df1
id v1
1 1 a
2 1 b
3 1 b
4 2 c
5 2 c
6 2 c
Run Code Online (Sandbox Code Playgroud)
我想创建一个第三个变量freq
包含最常见的观察v1
被id
ST
> df2
id v1 freq
1 1 a b
2 1 b b
3 1 b b
4 2 c c
5 2 c c
6 2 c c
Run Code Online (Sandbox Code Playgroud)
您可以使用ddply
自定义函数来选择最常见的值来执行此操作:
myFun <- function(x){
tbl <- table(x$v1)
x$freq <- rep(names(tbl)[which.max(tbl)],nrow(x))
x
}
ddply(df1,.(id),.fun=myFun)
Run Code Online (Sandbox Code Playgroud)
请注意,which.max
在出现平局的情况下,将返回第一次出现的最大值。请参阅包中的 ??which.is.maxnnet
以了解随机打破平局的选项。