3

我提供这个示例数据来解决我的问题。

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”功能,但未能成功。

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

谢谢大家的帮助,

巴宗

4

2 回答 2

4

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

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

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

于 2010-09-03T00:48:36.057 回答
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,但从您的数据看来,这不是问题。

于 2010-09-03T09:43:27.000 回答