我有一个类似这样的框架:
| 模型|动力系|起始年|年终|
| --|--|--|--|
| car1|柴油| 2010 | 2015 |
| car1|柴油| 2011 | 2013 |
| car1|电动| 2010 | 2015 |
| car1|柴油| 2015 | 2017 |
| car2|电动| 2012 | 2013 |
| car2|电动| 2010 | 2017 |
我想删除所有行的范围(即开始_年到结束_年)位于另一行的范围内,具有相同的模型和动力系统(即删除行:2和5)。我尝试了多种方法,但不能让他们工作.
到目前为止,我尝试了这个:
1.创建一个范围变量:test_range <- df_unique %>% rowwise() %>% mutate(years_range = list(start_year:end_year)) %>% ungroup()
1.删除其他变量范围内的行:df2 <- df %>% filter(!sapply(years_range, function(x) any(sapply(df$years_range, function(y) all(x %in% y) & !identical(x, y))))) %>% group_by(model, powertrain, years_range) %>% slice_head() %>% ungroup()
1条答案
按热度按时间y3bcpkx11#
如果
all
年包含在另一个序列中,则可以采用outer
方法,将:()
获得的序列从头到尾进行比较。字符串
把它放在
by
中,它沿着定义的by.
变量、apply函数和unsplit
进行拆分。型
型