2016-08-31 18 views
0

私は大きなデータセットdfを持っています。その短いバージョンは、次のようになります。隣接セルのコピー値R

Time Block Accuracy AccuracyFinal 
142  Run2 NA   incorrect 
234  Run2 incorrect NA 
121  Run2 NA   NA 
143  Run2 NA   incorrect 
122  Run2 incorrect NA 

私はそれがこのようになりますので、DFの$精度で左の隣接セルの値に間違ったをコピーしたい:

Time Block Accuracy AccuracyFinal 
142  Run2 incorrect incorrect 
234  Run2 incorrect NA 
121  Run2 NA   NA 
143  Run2 incorrect incorrect 
122  Run2 incorrect NA 

何をそれを行う最も効率的な方法は何ですか?

+6

'のdf $精度を[df $ AccuracyFinal == "incorrect"] < - "wrong" '; Rのサブセットに関する基本的なドキュメントを読むことができます:http://stackoverflow.com/documentation/r/1686/basic-subsetting#t=201608311236384809091 – scoa

+0

ありがとう!それはうまくいった。私はちょうど別の方法を見つけました: 'df [df $%%c(" S142 ")、"精度 "] = df [df $%%c(" S142 ")、" AccuracyFinal "]' – MariKo

答えて

0

私たちは、「I」と割り当てる際に論理条件を指定することによってdata.tableで効率的にこれを行うことができます - 「間違って」に(:=場所の変更)「精度」の対応する要素

library(data.table) 
setDT(df)[ AccuracyFinal == "incorrect" & is.na(Accuracy), Accuracy := "incorrect"] 
df 
# Time Block Accuracy AccuracyFinal 
#1: 142 Run2 incorrect  incorrect 
#2: 234 Run2 incorrect   NA 
#3: 121 Run2  NA   NA 
#4: 143 Run2 incorrect  incorrect 
#5: 122 Run2 incorrect   NA 
関連する問題