R 如何计算列中的重复项?
我有一个带有id列的数据框,我想计算相同id出现的频率(列被排序)。我找到了一种方法,使用2表示循环,但这肯定是非常低效的。有人能想出更好的解决办法吗R 如何计算列中的重复项?,r,R,我有一个带有id列的数据框,我想计算相同id出现的频率(列被排序)。我找到了一种方法,使用2表示循环,但这肯定是非常低效的。有人能想出更好的解决办法吗 id <- c(15580, 16144, 16144, 16144, 16144, 16144, 17985, 17985, 17985, 17985) df <- data.frame(id) df <- cbind(df, tmp=1) for(i in 2:nrow(df)) { if (df[i,1] == d
id <- c(15580, 16144, 16144, 16144, 16144, 16144, 17985, 17985, 17985, 17985)
df <- data.frame(id)
df <- cbind(df, tmp=1)
for(i in 2:nrow(df)) {
if (df[i,1] == df[i-1,1]) {
df[i,2] <- df[i-1,2] + 1
}
}
df$cnt <- df$tmp
for(i in seq(nrow(df)-1,1,-1)){
if (df[i,1] == df[i+1,1]) {
df[i,3] <- df[i+1,3]
}
}
在第二步中,最好只获得此输出(仅限唯一ID和计数):
我们可以使用
count
直接进入第二步
library(dplyr)
count(df, id)
# A tibble: 3 x 2
# id n
# <dbl> <int>
#1 15580 1
#2 16144 5
#3 17985 4
如果必须先执行步骤1,请在按“id”分组后使用
transmute
stp1 <- df %>%
group_by(id) %>%
transmute(cnt = n())
在链接中,您可以使用(df,as.data.frame(table(id)))执行
library(dplyr)
count(df, id)
# A tibble: 3 x 2
# id n
# <dbl> <int>
#1 15580 1
#2 16144 5
#3 17985 4
table(df$id)
stp1 <- df %>%
group_by(id) %>%
transmute(cnt = n())
distinct(stp1)