虚拟变量代码为R中的间隔

时间:2014-10-21 23:08:16

标签: r intervals

我有一个来自特定来源的属性的距离变量(以米为单位),通过QGIS在我的数据子集中创建。

我想在R:

中创建虚拟区间,如下所示
  

0-100,101-200,201-300,301-400& 401-500

我编码如下,以便在以下任何时间间隔内包含所有属性:

data$Distance_100<-0
data$Distance_100[data$Distance<100]<-1

data$Distance_200<-0
data$Distance_200[data$Distance>=101&data$Distance<200]<-1

data$Distance_300<-0
data$Distance_300[data$Distance>=201&data$Distance<300]<-1

data$Distance_400<-0
data$Distance_400[data$Distance>=301&data$Distance<400]<-1

data$Distance_500<-0
data$Distance_500[data$Distance>=401&data$Distance<500]<-1

在编码中似乎有些不对劲。它不会使用正确的编码分配位于区间内的所有属性。有什么建议吗?

1 个答案:

答案 0 :(得分:2)

使用cut函数为区间创建单个分类变量:

data$DistanceCut5 = cut(data$Distance, breaks=c(0,100,200,300,400,500))

如果您正在进行回归,则无需编写单独的虚拟变量。如果您在回归公式中输入RDistanceCut5会为您解决此问题。

另外,请查看cut的帮助,以便了解如何更改类别标签(使用labels参数)以及如何确定间隔的右侧或左侧关闭(使用right参数)。

此外,如果Distance的任何值大于500,则cut会将类别标签设置为NA(缺失)。如果您想确保Distance的所有值都包含DistanceCut5中的类别值,请确保levels的最低值和最高值之间的范围包含{{1}中的所有值1}}。

另一种风格评论:Distance实际上是data中的一项功能,因此最好不要习惯将其用作数据框的名称。