计算列中相同字符串的数量 - 删除奇数
问题描述:
我想计算列中相同字符串的数量,如果数字是奇数,则删除具有此类字符串的所有行。例如:计算列中相同字符串的数量 - 删除奇数
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次(奇数),因此,他们应该被删除。
答
使用table
EvenNames = names(table(DF$Name))[as.vector(table(DF$Name))%%2==0]
DF = DF[DF$Name %in% EvenNames,]
答
与dplyr
library(dplyr)
df_new <- df %>% group_by(Name) %>% filter(n() %% 2 == 0)
答
如果这个解决方案是基于奇/偶算在“名称”的独特元素,data.table
一个选项,只保留即便算上“名称”的是
library(data.table)
setDT(df)[, if(!.N%%2) .SD , by = Name]
的