非常绿色的R用户在这里。我必须对类别变量进行分类:一种是,针对儿童的委员会犯罪或存在精神健康问题(两分,1 =犯罪,0 =精神健康),针对儿童的犯罪行为或存在滥用药物的问题(二分,1 =犯罪,0 =物质滥用)。我想将这些群体合并在一起,这样我就会有一个二分法,危害儿童和心理健康或滥用毒品的群体。最好的方法是什么?我一直在玩“ if”语句,但无济于事。
我一直在玩“ if”语句,但无济于事。我想在数据集(com)中创建一个新变量,将针对儿童的犯罪(1)与心理健康/物质滥用(0)结合起来
x$com <- if(x$Group.finalCvsM == 1) {
x$com("1") }
if(x$Group.finalCvsS == 1) {
x$com("1") }
if(x$Group.finalCvsM == 0) {
x$com("0") }
if(x$Group.finalCvsS == 0) {
x$com("0") }
答案 0 :(得分:1)
由于您的数据编码为二进制0/1,因此我们只能使用逻辑或运算符|
。
## very nice way to solve this particular problem
x$com = x$Group.finalCvsM | x$Group.finalCvsS
## The result will be TRUE or FALSE.
## If you want 1/0 instead, then wrap it in as.integer:
x$com = as.integer(x$Group.finalCvsM | x$Group.finalCvsS)
通常,ifelse()
是if
的矢量化版本,适用于此类情况。有关详细信息,请参见帮助页面?ifelse
。在这里,您可以将其用作:
x$com = ifelse(x$Group.finalCvsM == 1 | x$Group.finalCvsS == 1, 1, 0)
(注意::由于您的问题没有给出示例输入和期望的输出,因此我不确定100%是否想要OR |
。也许您想要{{1} }?两者都能正常工作,请使用满足您目标的任何一种。