首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何为每个观察值调用变量的因子级别,并使用这些值在R中创建新变量?

如何为每个观察值调用变量的因子级别,并使用这些值在R中创建新变量?
EN

Stack Overflow用户
提问于 2012-11-08 06:41:07
回答 1查看 703关注 0票数 0

我有一个数据集,它有一个分类变量hospital_code,它有10个级别。

我正在运行的程序循环遍历并获取数据的一个子集,以便变量compLbl恰好包含10个hospital_codes中的2个,以便可以将它们相互比较。我现在遇到了这样一种情况,在每个循环中,我需要对compLbl进行二进制编码(1和0)。

如果我只是从第一个循环中获取子集数据,其中compLbl的可能值是AMHBJH,我可以很容易地执行以下操作:

代码语言:javascript
复制
nData$compLbl2 = with(nData,(ifelse(compLbl == "AMH", 1,0)))

并获得如下所示的数据:

代码语言:javascript
复制
head(nData)
compLbl outLbl Race_Code Age Complexity_Subclass_Code compLbl2
1     AMH      0         W  63                        1        1
2     AMH      0         W  44                        2        1
3     AMH      0         W  88                        3        1
4     BHC      0         W  64                        1        0
5     BHC      0         W  61                        2        0
6     BHC      0         W  61                        1        0

我如何推广这一点,这样无论compLbl中有哪两个值,它都会对它们进行二进制编码?我的想法是通过引用因子变量compLbl中存在的任何两个值的因子级别1来实现这一点。如下所示:

代码语言:javascript
复制
nData$compLbl2 = with(nData,(ifelse(FACTORLEVEL(compLbl) == 1, 1,0)))

其中,在上面的示例中,FACTORLEVEL(compLbl)将为AMH返回1,为BHC返回2,因为这些是R自动分配的因子级别。然而,我不确定如何做到这一点,或者这是否可能。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-11-09 04:42:36

我将使用以下命令:

代码语言:javascript
复制
nData <- within(nData, compLbl2 = rev(as.numeric(compLbl[drop = TRUE]) -1))
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13279524

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档