首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如果它们在某个日期范围内,请保持公司的观察

如果它们在某个日期范围内,请保持公司的观察
EN

Stack Overflow用户
提问于 2021-06-10 21:16:34
回答 2查看 30关注 0票数 0

我有一个关于r的子集的问题。我有一个很大的数据集,我只想保留那些有2000年到2019年的观察值的公司。因此,如果一家公司在2000年至2005年间进行了观察,那么该公司就必须被删除。

代码语言:javascript
复制
fiscal_year <- c(2000, 2001, 2002, 2003, 2004, 2005, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019)
fkey <- c(1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2)
df <- data.frame(fiscal_year, fkey)

我想要的输出是只保留公司2的20年观察结果。到目前为止,我在R中尝试了几个命令:

代码语言:javascript
复制
df <- df %>%
  group_by(fkey) %>% 
  subset(fiscal_year==2000 & fiscal_year==2001 & fiscal_year==2002 & fiscal_year==2003 & fiscal_year==2004 & fiscal_year==2005 & fiscal_year==2006 & fiscal_year==2007 & fiscal_year==2008 & fiscal_year==2009 & fiscal_year==2010 & fiscal_year==2011 & fiscal_year==2012 & fiscal_year==2013 & fiscal_year==2014 & fiscal_year==2015 & fiscal_year==2016 & fiscal_year==2017 & fiscal_year==2018 & fiscal_year==2019)

但是这个命令会删除所有的公司。

代码语言:javascript
复制
df <- df %>%
  group_by(fkey) %>%
  subset(fiscal_year>=2000 & fiscal_year<=2019)

但是这个命令可以让所有的公司。

所以,我不知道如何改变它工作的命令!

希望一切都清楚,如果不是,请评论!

EN

回答 2

Stack Overflow用户

发布于 2021-06-10 21:56:21

试试这个

代码语言:javascript
复制
firms <- unique(df$fkey)

for (i in 1:length(firms)){
  df_firm <- df[df$fkey == firms[i],]
  if (min(df_firm$fiscal_year) > 2000 | max(df_firm$fiscal_year) < 2019){
    df$fiscal_year[df$fkey == firms[i]] <- NA
  }
}

df <- df[complete.cases(df),] #remove years with NA
票数 0
EN

Stack Overflow用户

发布于 2021-06-11 09:23:34

您可以使用all保留从2000年到2019年的所有年份的公司。

代码语言:javascript
复制
library(dplyr)

df %>%
  group_by(fkey) %>%
  filter(all(2000:2019 %in% fiscal_year)) %>%
  ungroup -> result

result
#   fiscal_year  fkey
#         <dbl> <dbl>
# 1        2000     2
# 2        2001     2
# 3        2002     2
# 4        2003     2
# 5        2004     2
# 6        2005     2
# 7        2006     2
# 8        2007     2
# 9        2008     2
#10        2009     2
#11        2010     2
#12        2011     2
#13        2012     2
#14        2013     2
#15        2014     2
#16        2015     2
#17        2016     2
#18        2017     2
#19        2018     2
#20        2019     2
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67921943

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档