2016-05-19 4 views
0

Я бы очень признателен за вашу помощь. У меня есть таблица с идентификаторами, а результат столбца - touchpoint_type. Когда идентификатор отличается от предыдущего, я даю «C», если не «I». Вот мой код: mydata_cce2 $ touchpoint_type < -c (0) mydata_cce2 $ touchpoint_type [1] = "C" J = длина (mydata_cce2 $ id_transaction) для (дж 2: (J-1)) {R дать результат, основанный на условии

if (mydata_cce2$id_transaction[j] != mydata_cce2$id_transaction[j-1]) 

    { mydata_cce2$touchpoint_type[j] ="C" 

    } 

    else { 

    mydata_cce2$touchpoint_type[j] = "I" 

    } 

} 
This is the results that I should get: 
id_transaction touchpoint_type 
    id_transaction touchpoint_type 
1 68013539 C 
2 68013539 I 
3 68013539 I 
4 68013702 C 
5 68013738 C 
6 68013738 I 

Это `ы ошибка, что я получаю: Ошибка: inesperado '}' в "}"

Blockquote

+2

R расстроен вашим очень неряшливым форматированием. Сравните [эти два оператора if-else] (https://gist.github.com/nathan-russell/1f1bf203496df6fd007e4751f7b81ff7#file-if-else-r). – nrussell

ответ

0

Вы могли бы сделать ifelse() в сочетании с shift().

#Data 
df <- read.table(header=TRUE,text="id_transaction 
    68013539  
    68013539  
    68013539  
    68013702  
    68013738  
    68013738") 

library(data.table) 
df$touchpoint_type <- ifelse(shift(df$id_transaction,n=1L,type="lag") == df$id_transaction, "I","C") 

df 
    id_transaction touchpoint_type 
1  68013539   <NA> 
2  68013539    I 
3  68013539    I 
4  68013702    C 
5  68013738    C 
6  68013738    I 

Примечание причина, по которой первая запись не «C», потому что его первая запись в моем образце кадра данных. Если бы что-то было над ним, это было бы не NA.

+0

Извините MikeyMike, R говорит, что coudnt находят функцию «shift». вы почему? Большое спасибо – JaviLarry

+0

Его в пакете 'data.table'. Я обновил свой код. Извините, что не в том числе. –

+0

Большое спасибо. Сейчас он работает – JaviLarry

Смежные вопросы