我想计算列中相同字符串的数量,如果数字是奇数,则删除具有此类字符串的所有行。例如:
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
。如您所见,Greg
和Matt
出现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,]