0

我想在 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 > 0.60,然后用“Del”替换值,如果列 DEF 为 1(列中只有 0 或 1 个值)然后查看 FittedRobustRatio 列并将 <0.45 的值替换为例如“Del2”。谢谢。

4

1 回答 1

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"))

我可能是错的,因为您没有提供可重现的数据框,所以我无法对此进行测试。

于 2013-07-18T08:14:47.423 回答