生成一个虚拟变量

我在R中生成以下虚拟变量时遇到了麻烦。

我正在分析每年的时间序列数据(时间段为1948-2009)。我有两个问题。

1.我如何为观察值#10,即1957年生成一个虚拟变量(1957年的值=1,否则为0)?

2.2.如何生成一个虚拟变量,在1957年之前为零,从1957年开始到2009年取值为1?

如果你有很多变量,另一个可以更好地工作的选项是因子模型.矩阵

> year.f = factor(year)
> dummies = model.matrix(~year.f)

这将包括一个截距列(所有的1)和你的数据集中每个年份的一列,除了一个,这将是"默认"或截距值。

你可以通过修改model.matrix中的contrasts.arg来改变如何选择"default"。

另外,如果你想省略截距,你可以放弃第一列或者在公式的末尾添加+0

希望这很有用。

评论(10)

产生这些虚拟变量的最简单的方法是类似以下的方法。

> print(year)
[1] 1956 1957 1957 1958 1958 1959
> dummy  print(dummy)
[1] 0 1 1 0 0 0
> dummy2 = 1957)
> print(dummy2)
[1] 0 1 1 1 1 1

更一般地说,你可以使用 "ifelse "来根据条件在两个值之间进行选择。因此,如果出于某种原因,你想使用0-1的虚拟变量,例如4和7,你可以使用ifelse(year == 1957, 4, 7)

评论(0)

我通常在处理这种虚拟变量时的做法是。

(1)我如何为观察值#10,即1957年生成一个虚拟变量(1957年的值=1,否则为0)


data$factor_year_1 
评论(0)