2016-08-22 51 views
0

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

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

使用table

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

dplyr

library(dplyr) 
df_new <- df %>% group_by(Name) %>% filter(n() %% 2 == 0) 
3

如果这个解决方案是基于奇/偶算在“名称”的独特元素,data.table一个选项,只保留即便算上“名称”的是

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