R中的Excel Countif-添加新列以保留原始行数

时间:2018-07-11 23:34:43

标签: r countif

我需要在我的数据集中添加一个新列,该列计算现有列中观测值的频率。因此,如果观察发生两次,我需要在新列的旁边给我两次两次。

原始数据集

Col 1  
a
a
b
c
c
c

新数据集

Col 1    Col 2
a        2
a        2
b        1
c        3
c        3
c        3

1 个答案:

答案 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"