r - 带有因子变量输出的 ifelse 语句

标签 r if-statement

我有一个数据框df

  SNP           Effect   A1 A2
8  rs12145743    -0.0203  T  G
31  rs4650994    -0.0210  A  G
26  rs2602836     0.0192  A  G
34  rs4976033     0.0215  A  G
10 rs12525163    -0.0215  T  C
1  rs10282707    -0.0250  T  C
33  rs4917014    -0.0222  T  G
23  rs2293889    -0.0312  T  G
32  rs4871137    -0.0209  T  G
43   rs970548    -0.0258  A  C
27  rs2923084     0.0256  A  G
24  rs2303975     0.0279  A  G
36   rs499974    -0.0263  A  C
35  rs4983559    -0.0197  A  G
13 rs16942887     0.0831  A  G
16 rs17695224    -0.0290  A  G
18   rs181362    -0.0379  T  C

我正在创建一个新变量 new_A1,它会根据 Effect 的值而有所不同。

如果Effect>0,new_A1应该包含A1的值。

如果 Effect<0,new_A1 应该包含 A2 的值。

我正在尝试使用以下 ifelse 语句来执行此操作:

df$new_A1 <- ifelse(df$Effect>0, df$A1, df$A2)

但是,输出并不像预期的那样。 new_A1包含1s和2s,而不是保持原始变量A1A2

中因子的值
  SNP           Effect   A1 A2 new_a1
8  rs12145743    -0.0203  T  G      2
31  rs4650994    -0.0210  A  G      2
26  rs2602836     0.0192  A  G      1
34  rs4976033     0.0215  A  G      1
10 rs12525163    -0.0215  T  C      1
1  rs10282707    -0.0250  T  C      1
33  rs4917014    -0.0222  T  G      2
23  rs2293889    -0.0312  T  G      2
32  rs4871137    -0.0209  T  G      2
43   rs970548    -0.0258  A  C      1
27  rs2923084     0.0256  A  G      1
24  rs2303975     0.0279  A  G      1
36   rs499974    -0.0263  A  C      1
35  rs4983559    -0.0197  A  G      2
13 rs16942887     0.0831  A  G      1
16 rs17695224    -0.0290  A  G      2
18   rs181362    -0.0379  T  C      1

最佳答案

处理因子变量 A1A2作为字符变量给出适当的输出。

hdl.dir$new_A1 <- ifelse(hdl.dir$HDL_Effect<0, as.character(hdl.dir$A2), as.character(hdl.dir$new_A1))

关于r - 带有因子变量输出的 ifelse 语句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29802397/

相关文章:

r - do.call 在函数中 - 找不到对象错误

r - 从宽到长格式旋转,然后嵌套列

r - 按范围对数字向量进行分组

r - 魔法图像调整大小

c - 如果语句不工作/未达到

java - 如何创建依赖于一个语句的条件

r - 函数可以工作( boot.stepAIC ),但在另一个函数中抛出错误 - 环境问题?

Java - 运算符不等于不在字符串的 if 条件下工作

php - if 和 elseif 有什么区别?

javascript - 使用 if 语句 javascript 进行数字操作