R 包括以其他变量为条件的行 add_row
R include rows conditioned to other variables with `add_row`
我有一个 data.frame 喜欢 test
。它对应于与公司注册相关的信息。 year.entry
反映了公司进入注册的时间段。 items
是代表容量并在整个时间保持不变的元素。公司可能会在特定年份增加产能。我的目标是纵向呈现这些信息。
为了做到这一点,我最好包括 2010 年到 2015 年之间缺失的年份的行。我已经用 tibble
中的 add_row()
尝试过这个,但我很难让它工作.
> test %>% add_row(firm = firm, year.entry == (year.entry)+1, item = item, .before = row_number(year.entry) == n())
Error in eval(expr, envir, enclos) : object 'firm' not found
我想知道是否有更简单的方法来解决这个问题。理想的数据框应该是这样的:
firm year.entry item
<chr> <chr> <int>
1 1-102642692 2010 15
2 1-102642692 2011 15
3 1-102642692 2012 15
4 1-102642692 2013 15
5 1-102642692 2014 15
6 1-102642692 2015 8
test
由以下公式给出:
test = data.frame(firm = c("1-102642692", "1-102642692"), year.entry = c(2010, 2015), item =c(15,8))
我在数据中添加了一个虚拟公司以备后用。
- 首先,我确保每家公司都有
complete
感兴趣期间的所有年份。这就是我进入一家虚拟公司的原因。
- 缺失的年份被添加到数据框中。
- 然后我将最后的观察结转到
na.locf
。
- 完成后,我删除了虚拟公司。
comp <- data.frame(firm="test", year.entry= (2009:2016), item=0)
test = data.frame(firm = c("1-102642692", "1-102642692"), year.entry = c(2010, 2015), item =c(15,8))
library(zoo)
rbind(test,comp) %>%
complete(firm,year.entry) %>%
arrange(firm, year.entry)%>%
group_by(firm) %>%
mutate(item = na.locf(item, na.rm=FALSE)) %>%
filter(firm !="test")
结果:
firm year.entry item
<fctr> <dbl> <dbl>
1-102642692 2009 NA
1-102642692 2010 15
1-102642692 2011 15
1-102642692 2012 15
1-102642692 2013 15
1-102642692 2014 15
1-102642692 2015 8
1-102642692 2016 8
我有一个 data.frame 喜欢 test
。它对应于与公司注册相关的信息。 year.entry
反映了公司进入注册的时间段。 items
是代表容量并在整个时间保持不变的元素。公司可能会在特定年份增加产能。我的目标是纵向呈现这些信息。
为了做到这一点,我最好包括 2010 年到 2015 年之间缺失的年份的行。我已经用 tibble
中的 add_row()
尝试过这个,但我很难让它工作.
> test %>% add_row(firm = firm, year.entry == (year.entry)+1, item = item, .before = row_number(year.entry) == n())
Error in eval(expr, envir, enclos) : object 'firm' not found
我想知道是否有更简单的方法来解决这个问题。理想的数据框应该是这样的:
firm year.entry item
<chr> <chr> <int>
1 1-102642692 2010 15
2 1-102642692 2011 15
3 1-102642692 2012 15
4 1-102642692 2013 15
5 1-102642692 2014 15
6 1-102642692 2015 8
test
由以下公式给出:
test = data.frame(firm = c("1-102642692", "1-102642692"), year.entry = c(2010, 2015), item =c(15,8))
我在数据中添加了一个虚拟公司以备后用。
- 首先,我确保每家公司都有
complete
感兴趣期间的所有年份。这就是我进入一家虚拟公司的原因。 - 缺失的年份被添加到数据框中。
- 然后我将最后的观察结转到
na.locf
。 - 完成后,我删除了虚拟公司。
comp <- data.frame(firm="test", year.entry= (2009:2016), item=0)
test = data.frame(firm = c("1-102642692", "1-102642692"), year.entry = c(2010, 2015), item =c(15,8))
library(zoo)
rbind(test,comp) %>%
complete(firm,year.entry) %>%
arrange(firm, year.entry)%>%
group_by(firm) %>%
mutate(item = na.locf(item, na.rm=FALSE)) %>%
filter(firm !="test")
结果:
firm year.entry item
<fctr> <dbl> <dbl>
1-102642692 2009 NA
1-102642692 2010 15
1-102642692 2011 15
1-102642692 2012 15
1-102642692 2013 15
1-102642692 2014 15
1-102642692 2015 8
1-102642692 2016 8