R 如何转换因子值?

R 如何转换因子值?,r,loops,R,Loops,数据T中的值如下所示。因子级别和因子值之间不匹配。所以我只想把值2转换成1,1转换成0 我的意思是我希望R程序返回这个。系数w/2级“0”、“1”:1 0 0 1 1 0….) 我试过这样做 >str(T$gender) Factor w/ 2 levels "0","1": 2 1 1 1 2 2 1 2 2 1 ... T尝试以下操作: T<-transform(T,gender=ifelse(gender==1,0,1)) str(T$gender) T$gender<

数据T中的值如下所示。因子级别和因子值之间不匹配。所以我只想把值2转换成1,1转换成0

我的意思是我希望R程序返回这个。系数w/2级“0”、“1”:1 0 0 1 1 0….)

我试过这样做

>str(T$gender)
 Factor w/ 2 levels "0","1": 2 1 1 1 2 2 1 2 2 1 ...
T尝试以下操作:

T<-transform(T,gender=ifelse(gender==1,0,1))
str(T$gender)
T$gender<-as.factor(T$gender)

T$gender我希望这将有助于:

输入:

T$gender <- as.factor(ifelse(as.numeric(as.character(T$gender)) == 2, 1, 0))
此处“:”之后的输出表示与b的索引匹配的级别编号 级别1为0,级别2为1 b的输出为:

[1] 10101010

级别:0 1

由于b的第一个元素是1,它与级别2匹配,所以str(b)为您提供上述输出


我试过你推荐的方法,但没用。结果显示>>系数w/1水平为“0”:1。。。这样地。它改变所有的值。因子在内部被编码为整数,从1开始到级别数。第一个级别为1,第二个级别为2,以此类推。标签指示如何打印每个级别,因此在您的情况下,第一个级别标记为
“0”
,第二个级别标记为
“1”
。你所要求的是对因子的编码和存储方式进行根本性的改变——这将需要重写R的片段,重新编译语言,并且可能会破坏许多其他函数和包。因此,问题是你为什么要这样做?你认为这是解决方案,你有什么问题?你能把它转换成整数吗?有必要转换吗?请注意,如果您
print(T$gender)
或只是查看
T$gender
,它将按您的要求打印。此外,避免使用
T
作为变量名-将
T
保存为
TRUE
。我想将数据帧T中的所有值更改为0-1。这样它就可以与逻辑回归一起工作。我希望结果会是这样。(系数w/2级“0”、“1”:1 0 0 1 1 0…)。但我做不到,即使我尝试了其他人推荐的评论。是的,我知道你的短期目标是“系数w/2级别“0”,“1”:1 0 0 1 0 1 0”。请仔细阅读我的第一条评论:这个目标根本不可能实现。您需要重新编写R语言才能实现这一点。逻辑回归(和OLS回归,以及R中的大多数其他建模函数)知道如何在当前执行时处理
因子
glm
函数会自动将因子伪编码为值为0和1的列。您可以在当前数据上很好地使用逻辑回归,因此您的目标毫无意义。
a<-as.factor(c(1,2,1,2,1,2))
b<-NULL
for(i in 1:length(a)){
  if(a[i]==1){
    b[i]=1}
  else{b[i]=0}
}
b<-as.factor(b)
str(b)
Factor w/ 2 levels "0","1": 2 1 2 1 2 1