2016-08-22 49 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]