2017-04-09 118 views
-2

我想基于另一个变量的值向变量添加常量。换句话说,我有两个变量(Cancer,psa)。癌症1,0(如果患者患有癌症,则为“否”)我想将2.0添加到连续的另一个变量“psa”中。如果病人没有癌症,我想跳过他们的psa变量值并转到下一个病例。我认为这是一个,如果还是ifelse,但我不知道简单的R if或ifelse?

我最好的猜测至今: ifelse(cancer=1,(psa1=psa1+2),(psa1=psa1*1))

+1

hi!欢迎来到stackoverflow,请看看如何使一个伟大的重现性的例子,以获得一些想法如何改善您的帖子:http://stackoverflow.com/questions/5963269/how-to-make-a-great-r-reproducible例如。它也有点不清楚你得到了什么错误,以及你试图纠正错误。你的陈述有一些语法错误:首先你要检查与癌症的平等,所以它应该是“癌症== 1”。第二,如果你的赋值运算符'='在错误的地方。这个(如果你使用dplyr的话)将工作mutate(psa1 = ifelse(cancer == 1,psa1 + 2,psa1)' – bjoseph

+0

一个简单的'psa < - psa + 2 * cancer'应该这样做 – dww

回答

1

没有看到你的数据了一点很难说你想要什么,但在这里是用一个简单的例子an ifelse

R> sample_Data <- data.frame(cancer = sample(0:1, replace = T, 10), psa = sample(1:10)) 
R> sample_Data$psa1 <- ifelse(sample_Data$cancer == 1, sample_Data$psa + 2, sample_Data$psa * 1) 
R> sample_Data 
    cancer psa psa1 
1  0 5 5 
2  0 8 8 
3  1 2 4 
4  0 10 10 
5  1 1 3 
6  1 3 5 
7  0 9 9 
8  1 6 8 
9  1 7 9 
10  0 4 4 
+0

也'with (sample_Data,psa + 2 *(cancer == 1))' – user20650

+0

非常感谢你......这似乎很好... – Tom