当使用R满足某些条件时,使用两列创建新变量

时间:2010-09-03 00:25:45

标签: r conditional-statements multiple-columns

我提供此示例数据以解决我的问题。

aid=c(1,2,3,4,5,6,7,8,9,10)
foson=c(0,1,2,0,6,9,0,0,3,0)
fosof=c(0,0,2,3,0,0,0,5,0,0)
data=data.frame(aid,foson,fosof)

现在,我需要创建一个名为data $ hist的新变量(列),其中包含以下条件:

if foson==0 and fosof==0, then hist = 0;
if foson >=1 and fosof==0, then hist = 1;
if foson==0 and fosof>=1, then hist = 2; and
if foson>=1 and fosof>=1, then hist = 3

我尝试使用“ifelse”功能,但不尽如人意。

我希望这个问题足够清楚。

感谢所有帮助,

Bazon

2 个答案:

答案 0 :(得分:4)

一个可能的解决方案是执行以下操作

data$hist = (data$foson >=1) + (data$fosof >=1)*2

这应该会给你想要的结果。

答案 1 :(得分:2)

Ramnath的解决方案很棒,但要用ifelse来做,你可以这样做:

data$hist <- ifelse(data$foson>=1,ifelse(data$fosof>=1,3,1),ifelse(data$fosof>=1,2,0))

但这意味着fosonfosof <1中的任何一个==0会选择{{1}}的选项,但从您的数据看来,这似乎不是一个问题。