用于替换列中的值的函数

时间:2013-07-18 08:00:26

标签: r

我想在data.frame中创建新列,如下所示:

数据描述:

`'data.frame':  20 obs. of  3 variables:
 $ gvkey            : int  1004 1004 1004 1004 1004 1004 1004 1004 1004 1004 ...
 $ DEF              : int  0 0 0 0 0 0 0 0 0 0 ...
 $ FittedRobustRatio: num  0.549 0.532 0.519 0.539 0.531 ...`

我写的功能不起作用:

fun.mark <- function(x,y){
   if (x==0) { y[y>0.60] <- "Del"
   } else (x==1) {
y[y<0.45] <- "Del2"}}

NewDataFrame <- ddply(ShorterData,~gvkey,transform,Fitcorr=fun.mark(DEF, FittedRobustRatio))

基本上我想做的是查看DEF列,如果0和FittedRobustRatio&gt; 0.60然后用“Del”替换该值,如果列DEF为1(列中只有0或1个值),则查看FittedRobustRatio列并用&lt; 0.45替换值,例如“Del2”。感谢。

1 个答案:

答案 0 :(得分:0)

为此,我通常嵌套ifelse命令,ifelse设置如下:

ifelse(definition e.g. a>b, gets "x" if definition met, gets "y" if definition not met)

所以这应该有用......

data.frame$new.column <- ifelse (
   data.frame$DEF=="0"&data.frame$FittedRobustRatio>0.6, "Del", ifelse(
      data.frame$DEF=="1"&data.frame$FittedRobustRatio<0.45, "Del2", "none"))

我可能错了,因为你没有提供可重现的数据框,所以我无法测试它。