这里的目标是创建第四列,它将通过公式评估 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/