2017-02-03 18 views
1

他の列の条件に応じて、他の列の値を使用してデータフレームにフィールドを追加しようとしています。複数の列を使った操作

df <- data.frame(condition= c("startBin>7 & startBin<=12 & endBin>25 & endBin<=30","(startBin<=7 | startBin>12) & (endBin<=25 | endBin>30)","(startBin>7 & startBin<=12) & (endBin<=25 | endBin>30)","(startBin<=7 | startBin>12) & endBin>25 & endBin<=30"), 
          startBin = c(1,1,1,1), endBin = c(26,26,26,26), exprTemp=c("One","Two","Three","Four")) 

「条件」列の条件が満たされている場合は、値「1」の列「チェック」を作成します。チェックの値が条件が真である最後のレコードのための1であることを

df <- data.frame(condition= c("startBin>7 & startBin<=12 & endBin>25 & endBin<=30","(startBin<=7 | startBin>12) & (endBin<=25 | endBin>30)","(startBin>7 & startBin<=12) & (endBin<=25 | endBin>30)","(startBin<=7 | startBin>12) & endBin>25 & endBin<=30"), 
          startBin = c(1,1,1,1), endBin = c(26,26,26,26), exprTemp=c("One","Two","Three","Four"), check=c(0,0,0,1)) 

注:このように、私はのように更新データフレームをしたいです。

私は次のことを試してみました:

df$check <- eval(parse(text=paste0("ifelse(",df$condition,",1, '')",sep="")),df) 

が、evalは最後の条件を評価するように、すべての行= 1小切手を返しました。

+1

本当にあなたが達成しようとしているものは明らかではありません。 – Haboryme

+0

詳細については – Gaurav

+0

を更新しました。条件は各行ごとに異なります。私はこのスクリプトがモデルを推定するためにソフトウェアによって使用されるファイルを作成するので、文字列を使用しなければならないと思います。 – Gaurav

答えて

1

このコードを試してください:

df <- data.frame(startBin = c(1,1,1,1), endBin = c(26,26,26,26), exprTemp=c("One","Two","Three","Four")) 

condition= c("startBin>7 & startBin<=12 & endBin>25 & endBin<=30","(startBin<=7 | startBin>12) & (endBin<=25 | endBin>30)","(startBin>7 & startBin<=12) & (endBin<=25 | endBin>30)","(startBin<=7 | startBin>12) & endBin>25 & endBin<=30") 
parsedcond=(parse(text = condition)) 

newcol=logical(nrow(df)) 
for(i in 1:nrow(df)) 
newcol[i] <- with(df, eval(parsedcond[i]))[i] 

    df <- data.frame(df, newcol) 
> df 
    startBin endBin exprTemp newcol 
1  1  26  One FALSE 
2  1  26  Two FALSE 
3  1  26 Three FALSE 
4  1  26  Four TRUE 
+0

解決に感謝します。行ごとに行こうとしましたが、遅すぎました。私は数千の記録を持っており、記録的に記録するのは現実的ではありませんでした。 – Gaurav

+0

こんにちは、それぞれの行に1つの条件がありますか?条件はそれ自体を繰り返しますか? – Qbik

+0

条件を繰り返します。条件のうちのいくつかは、100回にもおよぶ。 – Gaurav

関連する問題