我需要在我的数据集中添加一个新列,该列计算现有列中观测值的频率。因此,如果观察发生两次,我需要在新列的旁边给我两次两次。
原始数据集
Col 1
a
a
b
c
c
c
新数据集
Col 1 Col 2
a 2
a 2
b 1
c 3
c 3
c 3
答案 0 :(得分:1)
使用dplyr
软件包的解决方案。 dat2
是最终输出。
library(dplyr)
dat2 <- dat %>%
group_by(`Col 1`) %>%
mutate(`Col 2` = n()) %>%
ungroup()
或
dat2 <- dat %>%
count(`Col 1`) %>%
left_join(dat, ., by = "Col 1") %>%
rename(`Col 2` = n)
或使用data.table
软件包。
library(data.table)
setDT(dat)
dat2 <- dat[, "Col 2" := .N, by = "Col 1"]
或基数R
dat2 <- merge(dat, as.data.frame(table(dat$`Col 1`)), by.x = "Col 1", by.y = "Var1")
names(dat2) <- c("Col 1", "Col 2")
数据
dat <- read.table(text = "'Col 1'
a
a
b
c
c
c",
header = TRUE, stringsAsFactors = FALSE)
names(dat) <- "Col 1"