伪变量,如果公司存在于R中的另一个数据帧中



如果公司存在于R中的另一个特定数据集中,我想创建值为1的伪变量。说明:我有一个数据框架,里面有所有挪威公司的关键财务数据。在另一个数据框架中,有一个在其他国家拥有子公司的所有公司的列表。我想创建一个伪变量,在财务数据框架中标识该公司有外国子公司。这样我就可以进行多变量回归。有什么方法可以创建这样一个伪变量吗?这些公司使用相同的识别系统,因此连接数据帧应该很容易。

这里有一个使用tidyverse的可能选项,并附带一个虚构的示例(但我只是猜测数据结构(:

library(tidyverse)
financial %>% 
  left_join(., subsidiaries, by = c("firm", "ID")) %>% 
  mutate(dummy = ifelse(!is.na(subsidiary) & subsidiary != "Norway", 1, 0))

输出

firm ID money subsidiary dummy
1 firm1  1   234       <NA>     0
2 firm2  2   345   country1     1
3 firm2  2   345   country2     1
4 firm3  3   352   country1     1
5 firm3  3   352   country3     1
6 firm4  4   546   country1     1
7 firm5  5   232     Norway     0

数据

financial <- data.frame(firm = c("firm1", "firm2", "firm3", "firm4", "firm5"),
                 ID = c(1, 2, 3, 4, 5),
                 money = c(234, 345, 352, 546, 232))

subsidiaries <- data.frame(firm = c("firm2", "firm2", "firm3", "firm3", "firm4", "firm5"),
                          ID = c(2, 2, 3, 3, 4, 5),
                          subsidiary = c("country1", "country2", "country1", "country3", "country1", "Norway"))

您可以按公司合并两个数据帧,然后创建一个伪变量。然后使用ifelse创建伪变量。

newdf = merge(financialdata,firmsdata, by="firms")

[如果有一个你正在使用的数据集的例子,这会更容易]

相关内容

最新更新