我想编写一个函数,根据三列中的值将每一行分类为穷,中或好
以下是示例数据
C = c(1, 0.4, 3, 6, 2)
N = c(0.1, 3, 5, 7, 13)
P = c(2, 3, 3, 4, 2)
mydf = data.frame(C,N,P)
假设我想用C<所有东西进行分类。无论N还是P,0.5都是差的。同样,对于N的所有值, 10
C的任何值使得1 <1。 C&lt; 4,和P使得1 <1。 P&lt; 4被列为好
其他所有内容都归类为中等
目前我使用了几个if函数,一次检查每个条件,然后是最终函数,看看所有必需条件是否良好,然后最终分类是好的,如果有任何差的那么差,否则平台。
相反,我想在一个函数中完成所有操作,因为我必须将它扩展到更多条件(20+)。我尝试过使用ifelse函数,但我无法弄明白
如果有任何好的资料来源阅读这些功能,我感谢任何输入,谢谢
答案 0 :(得分:0)
尝试:
> mydf$result = with(mydf, ifelse(C<0.5 | N>10, 'poor',ifelse(C<4 & C>1 & P>1 & P<4, 'good', 'medium')))
>
> mydf
C N P result
1 1.0 0.1 2 medium
2 0.4 3.0 3 poor
3 3.0 5.0 3 good
4 6.0 7.0 4 medium
5 2.0 13.0 2 poor
创建一个功能:
myfn = function(ddf){
ddf$res = with(ddf, ifelse(C<0.5 | N>10, 'poor',ifelse(C<4 & C>1 & P>1 & P<4, 'good', 'medium')))
ddf
}
反复写ifelse:
ddf$res = with(ddf, ifelse(C<0.5 | N>10, 'poor',
ifelse(C<4 & C>1 & P>1 & P<4, 'good',
'medium'
)) # number of these closing brackets should be same as number of 'ifelse'
) # this closing bracket is for 'with' function