R 将具有特殊字符的字符串向量转换为因子

R 将具有特殊字符的字符串向量转换为因子,r,R,我有一个Statadta原始数据文件,其中包含一个字符串向量,带有…。使用foreign包导入R后,我的数据如下所示: # dput(dat[1:3, 218]) # c("", "I want very much\xc9will do whatever it takes", "I want very much\xc9will do my fair share" #[1] <NA> 1 2 #Levels: 1 2 对于本例,我将创建一个名为test的对象: test

我有一个Stata
dta
原始数据文件,其中包含一个字符串向量,带有
。使用
foreign
包导入R后,我的数据如下所示:

# dput(dat[1:3, 218])
# c("", "I want very much\xc9will do whatever it takes", "I want very much\xc9will do my fair share"
#[1] <NA> 1    2   
#Levels: 1 2
对于本例,我将创建一个名为
test
的对象:

test <- c("", "I want very much\xc9will do whatever it takes", "I want very much\xc9will do my fair share")
我知道我可以编辑
dta
文件,但我不想接触原始数据。我还能试什么

最后,我想说以下几点:

# dput(dat[1:3, 218])
# c("", "I want very much\xc9will do whatever it takes", "I want very much\xc9will do my fair share"
#[1] <NA> 1    2   
#Levels: 1 2
#[1]12
#级别:12

test从您的预期输出来看,可能是:

 factor(as.vector(setNames(1:2,unique(test[test!='']))[test]))
 #[1] <NA> 1    2   
 #Levels: 1 2
如果您这样做:

 factor(test1, levels= unique(test[test!='']), labels=1:2)
 #[1] <NA> <NA> <NA>
 #Levels: 1 2
因子(test1,levels=unique(test[test!=''),labels=1:2)
#[1]   
#级别:12

不要使用
\\
来转义特殊字符。这项工作:

factor(test,
       levels=c("I want very much\xc9will do whatever it takes",
                "I want very much\xc9will do my fair share"),
       labels=c(1, 2))

#[1] <NA> 1    2   
#Levels: 1 2
系数(测试、,
levels=c(“我非常想要\xC9将不惜一切代价”,
“我非常想要\xC9将尽我最大的努力”),
标签=c(1,2))
#[1]  1    2   
#级别:12

带标签1和2的系数。但是由于编码问题,找不到我定义的级别;我想你已经考上了,对吗?我创建了以下内容。然后,我打电话给.factor。我可以很好地看到我的机器上出现的所有字母和级别。我得到你想要的了吗<代码>测试2不完全正确。我希望您的
test2[2]
test2[3]
分别有标签1和标签2。我正试图联系您。你是说你想改变这些因素的名称吗?比如“我非常想要\xC9将尽我的一份力量”到“1”,谢谢你的关注。我编辑了我的问题以显示我想要的输出。我希望这能让事情变得更清楚。我没有注意到所使用的
级别
测试中的字符串不同
谢谢。我被R输出中显示的双“\”搞糊涂了。
factor(test,
       levels=c("I want very much\xc9will do whatever it takes",
                "I want very much\xc9will do my fair share"),
       labels=c(1, 2))

#[1] <NA> 1    2   
#Levels: 1 2