r-如何创建指示ID出现次数的列

  • 本文关键字:ID 指示 何创建 创建 r dataframe
  • 更新时间 :
  • 英文 :


我希望创建一个列,为每个唯一值指示它在数据集中出现的次数。我想在下面的数据帧中生成频率列:

ID     Frequency
111       4
205       2
603       6
111       4

在原始数据中,111出现4次,205出现2次,603出现6次,等等。

基于@rogues77评论,在最初给出方法后,解决方案可以是:

library(dplyr)
#Code 1
newdf <- df %>% group_by(ID) %>% mutate(N=n())
#Code 2
newdf <- df %>% group_by(ID) %>% summarise(N=n())

当输入数据DF在末尾的注释中可重复显示时,将avelength一起使用。未使用任何程序包。

nr <- nrow(DF)
transform(DF, Freq = ave(1:nr, ID, FUN = length))

给予:

ID Freq
1 111    2
2 205    1
3 603    1
4 111    2

或使用dplyr

library(dplyr)
DF %>%
group_by(ID) %>%
mutate(Freq = n()) %>%
ungroup

备注

Lines <- "ID
111       
205       
603       
111       "
DF <- read.table(text = Lines, header = TRUE)

我们也可以使用data.table方法

library(data.table)
setDT(DF)[, Freq := .N, ID]

数据

DF <- structure(list(ID = c(111L, 205L, 603L, 111L)), class = "data.frame", 
row.names = c(NA, 
-4L))

最新更新