根据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马上就来