微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

R.根据条件对新变量进行变异

如何解决R.根据条件对新变量进行变异

我有一个带有三个变量(v1,v2和v3)的数据帧(zz)。我想根据某些条件对新变量v4进行突变。

  1. 如果v3
  2. 如果v3> 1,则v4 = V1或V2,以较大者为准。
  3. 如果v1或v2中的任何一个均为NA,则v4是非NA变量的值。
  4. 如果v1和v2均为NA,则v4也不为NA 下面的脚本生成示例数据以及解决方案的开始
v1 <- c(4,4,3,5,6,7,2,NA )
v2 <- c(6,NA,4)
v3 <- c(2,1,NA)
zz <- data.frame(v1,v2,v3)

zz = mutate(zz,v4 = ifelse( v3<=1,(v1+v2)/2,ifelse( ?????)

任何指导都会有所帮助

解决方法

您可以使用case_when指定条件。条件3和4可以使用coalesce组合。

library(dplyr)

zz %>%
  mutate(v4 = case_when(v3 <= 1 ~ (v1 + v2)/2,v3 > 1 ~ pmax(v1,v2),TRUE ~ coalesce(v1,v2)))
#   v1 v2 v3  v4
#1   4  6  2 6.0
#2   4  2  2 4.0
#3   4  3  1 3.5
#4   4  3  1 3.5
#5   3  4  1 3.5
#6   5  4  2 5.0
#7   6  5  1 5.5
#8   7  7  0 7.0
#9   2 NA NA 2.0
#10 NA  4 NA 4.0


版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。