如果公司存在于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")
[如果有一个你正在使用的数据集的例子,这会更容易]