R根据条件给出结果

时间:2016-05-19 18:38:30

标签: r if-statement conditional

我真的很感激你的帮助。     我有一个带ID的表,列结果是touchpoint_type。     如果ID与前一个ID不同,那么我给出“C”,如果不是“I”。     那是我的代码:     mydata_cce2 $ touchpoint_type< -C(O)     mydata_cce2 $ touchpoint_type [1] = “C”     j = length(mydata_cce2 $ id_transaction)     for(j in 2:(j-1)){

  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'}'in“}”

  

Blockquote

1 个答案:

答案 0 :(得分: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

请注意第一个条目不是&#34; C&#34;是因为它是我的示例数据框中的第一个条目。如果它上面有某些东西,它就不会是NA。