【发布时间】:2015-02-03 21:43:10
【问题描述】:
我有下面的df
var1 var2 a1 a2
1 a b y z
2 b a z y
3 b b z z
由以下代码创建
help <- data.frame(var1 = c("a", "b", "b"), var2 = c("b", "a", "b"), a1 = c(y, z, z), a2 = c(z, y, z))
我的意图是创建一个 ifelse 语句,我可以 (1) 当 var1 等于 'a' 时将所有 a1 值替换为 'bp',以及 (2) 当 var2 等于 ' 时将所有 a2 值替换为 'bp'一种'。如果 var1 或 var2 不是“a”,我不想更改该值。
ifelse 命令不是解决此问题的最佳方法吗?我开始使用help$a1[help$a1 == "a"] <- "bp" 手动执行每个操作,但是,这需要一些时间,因为我有多个变量和一个大型数据集。任何帮助都会很棒。
非常感谢。
【问题讨论】:
-
你有多少替换规则?我的疯狂猜测是,带有规则的补充数据集可能会对您的情况有所帮助,例如
var1.rules <- c(a=0,b=1,c=2)和var2.rules <- c(a=0,b=1,c=2) -
由于需要所有字符向量,我不得不稍微编辑帖子。我有 60 个不同的唯一变量需要在 var1 和 var2 中更改...但不确定这是否能回答您的问题...
-
你的意思是你的列名看起来像
c('var1', 'var2', 'var3',...,'varN', 'a1', a2', 'a3', ..., 'aN'),如果'aX'列中的对应行等于'a,你需要将varX列中的值设置为'bp' ' 对于从 1 到 N 的任何 X? -
不确定我是否遵循了这个问题,但 A Webb 下面的答案确实有效......如果这有助于澄清?
标签: r if-statement