R基于两列最大值的条件值分配

时间:2016-05-16 09:06:13

标签: r max conditional-statements

我想根据多个条件分配一个值,其中包括(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"

总结这两个条件:

  • 我想为那些超过或低于某个数字的行(使用all.premises)分配不同的值(这是直截了当的)
  • 我还想为那些大部分前提距离特定位置大于或小于2km的行分配不同的值(起诉场所&lt; 2k和场所&gt; 2k)

1 个答案:

答案 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