最近有个小伙伴问到了这一个问题:
已知每个公司的注册地,如何生成公司是否注册在同一个城市的零一矩阵?
| 图表 |
 |
首先我们用 Stata 来解决下:
clear all input 上市公司 str6 注册地 1 "上海" 2 "深圳" 3 "上海" 4 "深圳" end save data1, replace
|
然后对两个变量进行重命名:
use data1, clear ren 上市公司 上市公司1 ren 注册地 注册地1 save data2, replace
|
使用 cross 命令把两个数据交叉匹配起来,判断下各个公司对是否位于同一个城市再 spread 成宽数据即可:
use data1, clear cross using data2 gen v = (注册地 == 注册地1) drop 注册地* tostring 上市公司1, replace replace 上市公司1 = "_" + 上市公司1 spread 上市公司1 v
|
R 语言处理的思路类似:
library(tidyverse) tribble( ~上市公司, ~注册地, 1, "上海", 2, "深圳", 3, "上海", 4, "深圳", ) -> df1
df1 %>% crossing( df1 %>% set_names(c("上市公司1", "注册地1")) ) %>% mutate(v = as.numeric(注册地 == 注册地1)) %>% select(-contains("注册地")) %>% spread(上市公司1, v)
|
点击这里跳转到 RStata 短书平台获取附件:已知每个公司的注册地,如何生成公司是否注册在同一个城市的零一矩阵?
评论