我真的很感激你的帮助。 我有一个带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
答案 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。