根据R中同一数据框中的值,创建一个新列,从数据框中拾取值

根据R中同一数据框中的值,创建一个新列,从数据框中拾取值,r,if-statement,R,If Statement,我得到了数据框 Z1 Z2 Z3 Z4 AB XX 1 100 BA YY 2 200 AB YY 1 200 BA XX 2 100 我想根据Z3和Z4中的值创建一个新列,选择Z1或Z2 如果Z3=h1或Z4=h10,则Z5为Z1,否则Z5=Z1;该表应如下所示: Z1 Z2 Z3 Z4 Z5 AB XX h1 h10 AB BA YY h2 h20 YY AB YY

我得到了数据框

   Z1  Z2  Z3  Z4
   AB  XX  1   100  
   BA  YY  2   200
   AB  YY  1   200
   BA  XX  2   100
我想根据Z3和Z4中的值创建一个新列,选择Z1或Z2

如果Z3=h1或Z4=h10,则Z5为Z1,否则Z5=Z1;该表应如下所示:

   Z1  Z2  Z3  Z4  Z5
   AB  XX  h1  h10 AB  
   BA  YY  h2  h20 YY
   AB  YY  h1  h20 AB
   BA  XX  h2  h10 BA
为了实现这一目标,我采取了以下措施:

df = within(df,{
 Z5 == ifelse(df$Z3 == "h1" | df$Z4 == "h10", df$Z1,df$Z2)
})

当我这样做时,我在df$Z5中没有得到任何值,只需直接使用
ifelse

df$Z5 <- ifelse(df$Z3 == "h1" | df$Z4 == "h10", df$Z1, df$Z2)
df

  Z1 Z2 Z3  Z4 Z5
1 AB XX h1 h10 AB
2 BA YY h2 h20 YY
3 AB YY h1 h20 AB
4 BA XX h2 h10 BA

df$Z5直接使用
ifelse

df$Z5 <- ifelse(df$Z3 == "h1" | df$Z4 == "h10", df$Z1, df$Z2)
df

  Z1 Z2 Z3  Z4 Z5
1 AB XX h1 h10 AB
2 BA YY h2 h20 YY
3 AB YY h1 h20 AB
4 BA XX h2 h10 BA

df$Z5@user2974951我认为您的数据有问题,请检查我的答案,逻辑是否正确。我的错,您比我快了^^(类似的答案已删除)。谢谢。字符和因子之间的这种差异非常令人讨厌。大多数时候,你可能只需要坚持字符类型而不是因子类型就可以逃脱。@sfetan Coming some@user2974951我想你的数据有问题,请检查我的答案,逻辑在哪里工作。我的错,你比我快^^(删除了类似的答案)。谢谢。字符和因子之间的这种差异非常烦人。大多数情况下,你可能只需要坚持字符类型而不是因子类型就可以了。@sfetan马上就来