我想根据多个条件分配一个值,这些条件包括(I)15000以下的所有值,以及(ii)两列中每行的最高值。到目前为止,我有以下代码,它创建了一个新变量,并将"5000"分配给满足第一个条件的行。
df$new.variable[all.premises < 15000] <- "5000"
如何合并第二个条件,该条件计算出其他两个变量(称为前提<2k&前提>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.properties)(这是直接的)
- 我还想为那些拥有大多数前提的行分配不同的值,这些前提距离特定位置大于或小于2km(起诉前提<2k和前提>2k)
我不确定为什么或如何根据这些条件创建新变量,但应用以下两个步骤,我们可以替换值,
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