r - 使用最小/最大条件公式并在数据框中创建新列

标签 r

这里的目标是创建第四列,它将通过公式评估 y 或 z 的最高值是否高于 x,这将产生结果“1”...否则“0”。

df <- data.frame(x = 1000:1004, 
                 y = c(900, 950, 1050, 1100, 1000), 
                 z = c(500,1000,2000,2500,1000))
df[,4] <- ifelse(max(df$y,df$z) > df$x, 1, 0)
df[,4] <-ifelse(max(df[,2], df[,3]) > df[,1], 1, 0 )

我得到了各种结果...有时只显示一个数字。在其他情况下,整个向量(列)被传递到最小/最大公式,而不是单行(该行与列/向量进行比较,而不仅仅是其他匹配的行)。

任何人都可以帮助我使用最小值/最大值编写这个公式,以帮助我避免使用更长的 if/or/and 公式吗?

谢谢!

最佳答案

我们可以使用pmax来获取'x','y'之间的行最大值,然后与z进行比较。请注意,此处不需要 ifelse,因为逻辑向量 可以使用 as.integer

强制转换为二进制
df$newCol <- as.integer(with(df, pmax(y, z) >= x))

同样,如果需要基于min,则改为pmin

关于r - 使用最小/最大条件公式并在数据框中创建新列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57497426/

相关文章:

r - ggplot2:设置 alpha 值时,光栅绘图无法按预期工作

R hist 右/左簇合并

r - 如何找到最常用的10个单词?

r - 如何按年份统计分组负值

引用以保留字命名的数据框列

r - 如何在ggplot2的右侧放置转换的比例?

r - 如何评估 data.frame 中的调用?

r - 如何使用天数列创建开始和结束列?

r - 如何在R中转换编码

r - 如何在没有仪表板结构的 ShinyApp 中利用 valuebox?