【发布时间】:2016-08-27 19:10:30
【问题描述】:
我想在数据框A中创建变量NewVar,如果满足以下两个条件,则将其设置为1。
-
Var0==列名中的数字Var(i),例如Var0=4和Var4 - 变量 Var(i) 不等于 0:
!Var(i)==0
下面是我想要实现的示意图:
A <- read.table(text=" Var0 Var1 Var2 Var3 Var4 NewVar
4 0 0 0 1 1
4 0 0 0 0 0
2 0 1 0 0 1
2 0 0 0 0 0
1 1 0 0 0 1
1 0 0 0 0 0
3 0 0 1 0 1
3 0 0 0 0 0", header=T)
我一直在尝试使用类似的东西:
A$NewVar <- for (var in names(A[ ,2:5])) {
ifelse(A$Var0==grep("var", colnames(A)) & A$var==1, 1, 0)
}
访问列索引,但它不起作用。
在 Excel 中,我将使用 match 语句返回变量 Var1-4 中 1 的列索引,并使用 if 语句来测试列索引是否等于 Var0 中的值。如果是,则 NewVar=1,否则为 0。
希望这能让我想要做的事情更清楚。我正在尝试从 Excel 迁移到 R!
【问题讨论】:
-
您无需进行任何更改,但只是为了将来的问题
dput将是您共享数据的一种更简单的方式 -
哦,好的,谢谢@Hack-R。
-
0 和 1 是否真的对应 True 和 False 等逻辑值?
-
嗨@NathanDay,我不确定他们是否这样做了,但他们没有。