• R语言
  • 如何生成公司行业的虚拟变量

各位大神,好多经济研究都需要对年份、地区和行业分别用虚拟变量来处理,如何能生成这些虚拟变量啊?

比如说原数据拿来虽然每个公司都有个行业代码,但是怎么能把每个公司的行业代码变成每个行业的虚拟变量,然后让公司属于这个行业的时候dummy变为1,其他行业全的dummy为0?数据一大手动添加不太现实

另外行业本身原数据分的太细了,我想让生成的几个虚拟变量来代表大范围一点的行业如何才能做到?

举例来说,假如我的数据是这样

公司名称 industry#
a 11
b 12
c 13
d 14
e 21
f 22
g 33
h 31
i 41
j 11
k 52

我第一步想生成新的变量,每一个变量都是一个行业代码的dummy variable,比如说变成下面这样如何做到?

公司名称 industry# ind11 ind12 ......(一直生成到55)
a 11 1 0
b 12 0 1
c 13 0 0
d 14 0 0
e 21 0 0
f 22 0 0
g 33 0 0
h 31 0 0
i 41 0 0
j 11 1 0
k 52 0 0

另外如果行业太多了(原数据一共细分了99个行业),如何能让生成的dummy概括的更广一些。比如说还是上面那组数据,比起生成99个industry dummy variables, 我就想要三个,第一个dummy如果公司的industry#在1到39之间为1,其他为0,第二个dummy如果公司industry#在40到59之间为1,其他为0,第三个dummy,1到59以外的全部为1,1到59之间的是0。
> library('plyr')
> library('dplyr')


> smp <- sample(99,1000,replace=TRUE)

> split(smp, cut(smp, c(-Inf, c(1,40,60), Inf)))
> dfm <- data.frame(line=smp) %>% tbl_df %>% 
mutate(.,d1=ifelse(line>=0&line<40,1,0),
d2=ifelse(line>=40&line<60,1,0),
d3=ifelse(line>=60&line<=99,1,0))


lm(line~d1+d2+d3,data=dfm)