我想推断一个角色报告的信息,见下文:
X<- c("BB", "BB", "CC", "CC", "CC", "EE", "EE")
names(X) <- c(1, 2, 2, 2, 3, 3, 4)
字符如下:
X
1 2 2 2 3 3 4
"BB" "BB" "CC" "CC" "CC" "EE" "EE"
"CC"
位置 2 出现两次,则应通过以下行报告此信息Time
预期输出:
1 2 2 3 3 4 # Position
1 1 2 1 1 1 # Times
"BB" "BB" "CC" "CC" "EE" "EE" # Character
试:
table (names(X))
data.frame(X)
我们可以在'X' 的值为 'X' 的names
上使用 group by 操作并获取频率
library(data.table)
data.table(X, nm = names(X))[, .N, .(X, nm)]
# X nm N
#1: BB 1 1
#2: BB 2 1
#3: CC 2 2
#4: CC 3 1
#5: EE 3 1
#6: EE 4 1
或带有tidyverse
的类似选项
library(dplyr)
data_frame(X, nm = names(X)) %>%
count(X, nm)
或者来自base R
的aggregate
aggregate(cbind(n = rep(1, length(X))) ~ X + names(X), FUN = sum)