SAS-R转换;年度假人、变量命名、回归中的编号范围列表

SAS-R转换;年度假人、变量命名、回归中的编号范围列表,r,sas,regression,R,Sas,Regression,我正在将某些回归任务从SAS转换到R。这些是针对时间序列横截面销售数据集运行的各种各样的享乐价格回归。作为一个典型的例子,考虑称为销售的数据集,包括字段PARCELID、SaleYear、SalePrice加上一组属性特性BDRMS、浴室等。PARSELID、SALEYY是表的一个键,并假设它已成功读入R数据文件。 我想通过一系列年度假人来增加销售额,例如d2000、d2001。。。d2014基于销售年的价值。在SAS/SQL中,我使用select*语句执行此操作,该语句包含一个带有for循环的

我正在将某些回归任务从SAS转换到R。这些是针对时间序列横截面销售数据集运行的各种各样的享乐价格回归。作为一个典型的例子,考虑称为销售的数据集,包括字段PARCELID、SaleYear、SalePrice加上一组属性特性BDRMS、浴室等。PARSELID、SALEYY是表的一个键,并假设它已成功读入R数据文件。

我想通过一系列年度假人来增加销售额,例如d2000、d2001。。。d2014基于销售年的价值。在SAS/SQL中,我使用select*语句执行此操作,该语句包含一个带有for循环的宏,该循环使用case语句创建并命名每个虚拟对象。这将生成一个新的数据集,其中包含所需的假人

显然,R可以通过factor和model.matrix以及毫无疑问的许多其他方式更优雅地实现这一点。我的问题是,在我R职业生涯的这个阶段,我无法将stackoverflow上发布的类似问题的解决方案应用于我的特定问题

此外,我们的命名约定要求所有虚拟变量名的形式为d_173

然后是在回归调用中指定假人的问题。SAS中的Proc reg允许在模型语句中以数字范围列表的缩写形式指定带整数后缀的解释变量的索引系列,例如d_2000-d_2002,而不是d_2000 d_2001 d_2002。我相信在R的lm设施中也有一个很好的方法来实现这一点。然而,我不想只在SaleYear中包含与所有不同值相对应的假人,而不是R选择的参考类别。模型变体使用不同的年份跨度进行开发和测试,因此我希望能够方便地指定要包含的年度假人的范围

非常感谢。我意识到这些都是相当幼稚的问题,但我希望自己能够通过更多的练习和一些建议来回答这些问题。交互变量将是下一个挑战


再次感谢。

以下是使用ggplot2中的经济学数据集创建年份假人的示例:


如果你希望截距下降一年,请省略-1。

除了G.G的优雅方法外,还有其他处理范围的方法。您可以使用paste或sprintf来构造名称、grep或match,所有这些选项都可能在[calls]中有效,以限制传递给数据参数的列。在提供更多具体示例后,可能会得到更完整的答案

paste0("d_20", sprintf("%02s", 0:12))
 [1] "d_2000" "d_2001" "d_2002" "d_2003" "d_2004" "d_2005" "d_2006" "d_2007" "d_2008" "d_2009"
[11] "d_2010" "d_2011" "d_2012"
有一个交互函数,它将因子作为参数。
paste0("d_20", sprintf("%02s", 0:12))
 [1] "d_2000" "d_2001" "d_2002" "d_2003" "d_2004" "d_2005" "d_2006" "d_2007" "d_2008" "d_2009"
[11] "d_2010" "d_2011" "d_2012"