2016-08-31 3 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 

Я хочу, чтобы скопировать значение неправильный в соседней ячейке слева в ДФ $ точности, поэтому он будет выглядеть следующим образом:

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 $ AccuracyFinal == "неправильный"] <- "неправильный" '; вы можете прочитать основную документацию по подмножеству в R: http://stackoverflow.com/documentation/r/1686/basic-subsetting#t=201608311236384809091 – scoa

+0

спасибо! это сработало. Я просто нашел другой способ: 'df [df $ Time% in% c (" S142 ")," Accuracy "] = df [df $ Time% в% c (" S142 ")," AccuracyFinal "]' – MariKo

ответ

0

Мы можем сделать это эффективно с 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