我准备了一个小例子:exp.pic
我想删除欧宝的行,因为欧宝在同一型号中出现两次,而福特只出现一次。
我只想拥有至少两个不同型号的汽车。
Car<-c("Audi","Audi","BMW","BMW","Mercedes","Opel","Ford","Audi","BMW","Mercedes","Audi","BMW","Mercedes","Opel")
Model<-c("A4","A4","X5","X5","E","Astra","Fiesta","A6","M3","C","A6","530","A","Astra")
Car<-cbind(Car,Model)
Car<-data.frame(Car)
例如,只要有其他奥迪车型,奥迪A4就会出现五次。
我希望我能解释清楚。
答案 0 :(得分:2)
另一次尝试dplyr
:
Car %>%
group_by(Car) %>%
filter(n_distinct(Model) > 1) %>%
ungroup() %>%
arrange(Car, Model)
# # A tibble: 11 x 2
# Car Model
# <fct> <fct>
# 1 Audi A4
# 2 Audi A4
# 3 Audi A6
# 4 Audi A6
# 5 BMW 530
# 6 BMW M3
# 7 BMW X5
# 8 BMW X5
# 9 Mercedes A
# 10 Mercedes C
# 11 Mercedes E
答案 1 :(得分:0)
使用subset
,我们可以针对具有多个独特模型的汽车公司进行过滤。
out <- subset(Cars, ave(Model, Car, FUN = function(x) length(unique(x))) > 1)
out
# Car Model
#1 Audi A4
#2 Audi A4
#3 BMW X5
#4 BMW X5
#5 Mercedes E
#8 Audi A6
#9 BMW M3
#10 Mercedes C
#11 Audi A6
#12 BMW 530
#13 Mercedes A
数据
Cars <- data.frame(Car, Model, stringsAsFactors = FALSE)
# ^ note the different name