如果陈述和变异

时间:2014-11-14 17:11:44

标签: r if-statement dplyr

EMPLTOT_N   FIRMTOT average min
12289593    4511051 5   1
26841282    1074459 55  10
15867437    81243   300 100
6060684 8761    750 500
52366969    8910    1000    1000
137003  47573   5   1
226987  10372   55  10
81011   507 300 100
23379   52  750 500
13698   42  1000    1000
67014   20397   5   1

我的数据与上面的数据类似。我想使用mutate函数创建一个新列EMP:

emp= average*FIRMTOT if EMPLTOT_N/FIRMTOT<min
and emp=EMPLTOT_N if EMPLTOT_N/FIRMTOT>min

1 个答案:

答案 0 :(得分:0)

在您的示例数据中EMPLTOT_N / FIRMTOT永远不会少于min,但这应该有效:

df <- read.table(text = "EMPLTOT_N   FIRMTOT average min
12289593    4511051 5   1
26841282    1074459 55  10
15867437    81243   300 100
6060684 8761    750 500
52366969    8910    1000    1000
137003  47573   5   1
226987  10372   55  10
81011   507 300 100
23379   52  750 500
13698   42  1000    1000
67014   20397   5   1", header = TRUE)

library('dplyr')
mutate(df, emp = ifelse(EMPLTOT_N / FIRMTOT < min, average * FIRMTOT, EMPLTOT_N))

在上面的EMPLTOT_N / FIRMTOT == min中,emp将被赋予EMPLTOT_N的值,因为在这种情况下你没有指定你想要发生的事情。