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

したがって、基本的に私がやりたいことは、0 および FittedRobustRatio > 0.60 の場合に DEF 列を調べ、値を「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 に答える