我提供此示例数据以解决我的问题。
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
答案 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))
但这意味着foson
或fosof
<1
中的任何一个==0
会选择{{1}}的选项,但从您的数据看来,这似乎不是一个问题。