通过检查行在R中是否有多个值来删除行
我有一个这种形式的数据框通过检查行在R中是否有多个值来删除行,r,filter,R,Filter,我有一个这种形式的数据框 Year Department Jan Feb ................... Dec 2017 TF 15.15 225.51 .............. 5562.1 2015 CIF ................................... 2013 TTR .................................... 2011 COR .
Year Department Jan Feb ................... Dec
2017 TF 15.15 225.51 .............. 5562.1
2015 CIF ...................................
2013 TTR ....................................
2011 COR ....................
. .............................
. ......................
作为总结,我想创建一个算法,但首先我必须进行以下过滤:
- 如果某个部门没有2013年、2014年、2015年、2016年的值,则我希望从我的数据集中排除该部门
- 换句话说,通过读取每个部门的数据,按月份列中包含所有四年值的部门过滤数据
谢谢。使用R base的解决方案:
df = read.table(text = "Year, Department
2016,TF
2017,TF
2013,CIF
2014,CIF
2015,CIF
2016,CIF
2013,TTR", header = TRUE, sep = ",", stringsAsFactors = FALSE)
df[df$Department %in% subset(aggregate(subset(df, Year %in% c(2013,2014,2015,2016)), by=list(n$Department), FUN=length), Department==4)[,1], ]
输出:
Year Department
3 2013 CIF
4 2014 CIF
5 2015 CIF
6 2016 CIF
我找不到与这个问题完全相同的答案。似乎是一个快速解决方法,使用
groupby
:
库(dplyr)
df#A tible:6 x 2
#>年鉴部
#>
#>1 2013 TF
#>2 2014 TF
#>2015年3月TF
#>4 2016 TF
#>5 2015到岸价
#>2016年6月TTR
df%>%
组别(部门)%>%
变异(x=年百分比,以%c表示(2013:2016),
y=总和(x))%>%
解组()%>%
过滤器(y==4)
#>#tibble:4 x 4
#>年份部门x y
#>
#>2013年1月4日
#>2014年2月4日
#>2015年3月4日
#>4 2016 TF真实4
欢迎来到SO。本网站不是一个代码编写服务,也不是为了提供完整的解决方案。用户需要付出一些努力和编写一些代码,而SO将在这里帮助您解决具体的编程问题。你已经试过什么了吗?请阅读: