如何用R语言给虚拟变量赋值

Python019

如何用R语言给虚拟变量赋值,第1张

先从最简单的开始

假设你的数据是一个向量a,然后你作一个判断a==1,会得到一个向量全部是True和False

然后你把这个新的逻辑变量转换成数字变量就OK了。具体这么操作:

>a<-read.table() #读入数据

>a

[1] 1 2 3 2 1 0 8 6

>b<-a==1 #作判断a==1,然后把逻辑结果赋给b

>as.numeric(b) #强制转换成数字变量

[1] 1 0 0 0 1 0 0 0

我们只能手动将factorvariable转换为取值(0,1)的虚拟变量。所用的函数一般有model.matrix(),nnetpackage中的class.ind()。

最简单的方法,数据框的名称,加上你要提取的列数,示例如下:需要注意的是,如果只提取单列的话,得到的数据就变成了一个vector,而不再是dataframe的格式了。

#这里我假设你的数据是test,是一个框架数据

dimoftest <- dim(test) # 获取数据维数

factoftest <- c() #定义factor数组

k <- 2 #定义你的那个变量的列k,你自己设定

#循环找出k列大于k-1列10%的序号,并将factor数组设为1,否则为0

for(i in 1:dimoftest){

if((test[i,k]- test[i,k-1])/test[i,k-1] >0.1) factoftest[i] = 1

else factoftest[i] = 2

}

factoftest #显示数组

#创建一个factor因子,标记为1,2,文本也设为1,2

newfactor <- factor(factoftest,levels = c(1,2), labels = c("1","2"))

#合并到数据中

test <- data.frame(test, newfactor)

#查看

test

不明白的话继续问