问题描述
美好的一天,
我有一个面板数据集,其中包含数千对(二元组);每个小组包含23年,观察超过50万次。因变量Value26是两国之间交换的贸易价值(编码为对)。
我想做的(我可以在Stata中做)是创建一个分类变量,如果在面板内未进行任何交易,则该变量为0,如果交易对至少交换了一年的交易,则为1(就像我将我想在进行回归分析时没有交易时排除那些货币对。
下面是我的数据集中的一个示例,该示例显示NoTrade26的值为1,因为第9对之间至少存在1年。
| year | pair | Value26 | NoTrade26 |
|------|------|----------|-----------|
| 2014 | 8 | 0 | 0 |
| 2015 | 8 | 0 | 0 |
| 2016 | 8 | 0 | 0 |
| 2017 | 8 | 0 | 0 |
| 2018 | 8 | 0 | 0 |
| 2002 | 9 | 25.17931 | 1 |
| 2004 | 9 | 0 | 1 |
| 2005 | 9 | 0 | 1 |
| 2006 | 9 | 0 | 1 |
| 2007 | 9 | 0 | 1 |
| 2008 | 9 | 0 | 1 |
| 2009 | 9 | 0 | 1 |
| 2010 | 9 | 0 | 1 |
| 2011 | 9 | 0 | 1 |
| 2012 | 9 | 0 | 1 |
| 2013 | 9 | 0 | 1 |
| 2015 | 9 | 0 | 1 |
| 2017 | 9 | 0 | 1 |
有人可以建议如何在R中对此进行编码吗?我已经弄了几个小时的代码,但是关于如何在R中执行此操作却无济于事。
解决方法
这应该做到。
data <- tibble::tribble(
~year,~pair,~Value26,~NoTrade26,2014,8,2015,2016,2017,2018,2002,9,25.17931,1,2004,2005,2006,2007,2008,2009,2010,2011,2012,2013,1 )
library(dplyr)
data %>%
group_by(pair) %>%
mutate(NoTrade26 = as.numeric(!all(Value26 == 0)))
# A tibble: 18 x 4
# Groups: pair [2]
# year pair Value26 NoTrade26
# <dbl> <dbl> <dbl> <dbl>
# 1 2014 8 0 0
# 2 2015 8 0 0
# 3 2016 8 0 0
# 4 2017 8 0 0
# 5 2018 8 0 0
# 6 2002 9 25.2 1
# 7 2004 9 0 1
# 8 2005 9 0 1
# 9 2006 9 0 1
# 10 2007 9 0 1
# 11 2008 9 0 1
# 12 2009 9 0 1
# 13 2010 9 0 1
# 14 2011 9 0 1
# 15 2012 9 0 1
# 16 2013 9 0 1
# 17 2015 9 0 1
# 18 2017 9 0 1
,
internal