R中区间的伪变量代码

R中区间的伪变量代码,r,intervals,R,Intervals,我有一个来自特定来源的属性的距离变量(以米为单位),通过QGIS在我的数据子集中创建 我想在R中创建如下虚拟间隔: 0-100101-200201-300301-400和401-500 为了在以下任何时间间隔内包含所有属性,我编写了如下代码: data$Distance_100<-0 data$Distance_100[data$Distance<100]<-1 data$Distance_200<-0 data$Distance_200[data$Distance&g

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

我想在R中创建如下虚拟间隔:

0-100101-200201-300301-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
data$DistanceCut5 = cut(data$Distance, breaks=c(0,100,200,300,400,500))

data$Distance\u 100使用
cut
函数为间隔创建单个分类变量:

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
data$DistanceCut5 = cut(data$Distance, breaks=c(0,100,200,300,400,500))
如果您正在进行回归,则不需要编写单独的伪变量<如果在回归公式中输入
DistanceCut5
,则code>R
将为您解决该问题

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

此外,如果
Distance
的任何值大于500,cut会将类别标签设置为
NA
(缺失)。如果要确保
Distance
的所有值在
DistanceCut5
中都有类别值,请确保
级别的最低值和最高值之间的范围包括
距离中的所有值


另一种风格的评论:
data
实际上是
R
中的一个函数,因此最好不要养成将其用作数据帧名称的习惯。

model.matrix(~DistanceCut5+0,data=data)
将在需要时为您提供拆分的列。谢谢,@eipi10!就一个(愚蠢的)问题。0-100区间似乎无法估计?从DistanceCut(100200)DistanceCut(200300)等开始。那么这是101-200和201-300吗?因此它不会重叠。非常感谢!您是指您的数据帧还是这是回归分析的结果?如果是后者,则
(0100)
是基本类别,其他类别系数是相对于基本类别的。这就像传统的虚拟编码一样。如果要在回归中包含截距,则始终必须省略一个类别。另一件事:由于本例中的类别是有序的,因此应设置
有序的\u result=TRUE
cut
函数中。这将使
R
distance cut5
视为有序因素,而不是名义因素。除了迄今为止有用的答案外,请查看
findInterval
,并在发布问题之前学会搜索。