我想根据多个条件分配一个值,其中包括(i)低于15,000的所有值,以及(ii)两列中每行的最高值。到目前为止,我有以下代码创建一个新变量并为满足第一个条件的行分配“5000”。
df$new.variable[all.premises < 15000] <- "5000"
如何合并第二个条件,其中最高值是其他两个变量(称为前提<2k&amp; premises&gt; 2k)?这是数据结构:
Postcode all.premises premises<2k premises>2k
AB1 123 24000 18000 6000
AB2 124 30000 22000 8000
AB3 125 12000 4000 8000
AB4 126 24000 18000 6000
我认为which.max可能在这里有用,在这种情况下它可能是这样的:
df$new.variable[all.premises < 15000 & which.max(premises<2k, premises>2k)] <- "5000"
总结这两个条件:
答案 0 :(得分:0)
我不确定为什么或如何根据这些条件创建新变量,但应用以下两个步骤我们可以替换值,
df$all.premises[df$all.premises < 15000] <- 5000
df[3:4] <- t(apply(df[3:4], 1, function(i) replace(i, which.max(i), 5000)))
df
# Postcode all.premises premises.2k premises.2k.1
#1 AB1 123 24000 5000 6000
#2 AB2 124 30000 5000 8000
#3 AB3 125 5000 4000 5000
#4 AB4 126 24000 5000 6000