计算列中相同字符串的数量 - 删除奇数

时间:2016-08-22 15:14:03

标签: r

我想计算列中相同字符串的数量,如果数字是奇数,则删除具有此类字符串的所有行。例如:

set.seed(1)
df <- data.frame(
Name = c(rep("Mark", 6), rep("Tom", 8), rep("Tim", 12), rep("Greg", 3), rep("Matt", 3)),
rand = rnorm(32, 0, 1))

查看专栏Name。如您所见,GregMatt出现3次(奇数),因此应删除它们。

3 个答案:

答案 0 :(得分:3)

dplyr

的解决方案
library(dplyr)
df_new <- df %>% group_by(Name) %>% filter(n() %% 2 == 0) 

答案 1 :(得分:3)

如果这是基于&#39;名称&#39;中的唯一元素的奇数/偶数,则data.table的选项只保留&#39;名称&#39;的偶数。是

library(data.table)
setDT(df)[, if(!.N%%2) .SD , by = Name]

答案 2 :(得分:3)

使用table

EvenNames = names(table(DF$Name))[as.vector(table(DF$Name))%%2==0]
DF = DF[DF$Name %in% EvenNames,]