R 迭代两个数据集并将结果返回到一个数据集
我有两个数据集,事务长和事务短。事务_long在数据集中有许多策略和价格的报价,并带有一个购买点(用true表示)。交易记录仅包含购买点的条目 我的目标是在Transaction\u short数据集中添加一个名为Policy\u Change\u Frequency的列。对于短数据集中的每个客户,迭代长数据集中该客户的行,并计算策略更改的时间 要查找策略更改,我可以使用R 迭代两个数据集并将结果返回到一个数据集,r,loops,R,Loops,我有两个数据集,事务长和事务短。事务_long在数据集中有许多策略和价格的报价,并带有一个购买点(用true表示)。交易记录仅包含购买点的条目 我的目标是在Transaction\u short数据集中添加一个名为Policy\u Change\u Frequency的列。对于短数据集中的每个客户,迭代长数据集中该客户的行,并计算策略更改的时间 要查找策略更改,我可以使用sum(diff(Transaction\u Long$policy)!=0),但不确定如何迭代这两个数据集并获得结果 详情:
sum(diff(Transaction\u Long$policy)!=0)
,但不确定如何迭代这两个数据集并获得结果
详情:
Customer_Name : name of customer
Customer_ID: Customer Identifier number
Purchase: Boolean variable (Yes-1,No-0)
Policy: Categorical (takes values 1-5)
Price : Price quoted
数据集1-事务长
Customer_Name,Customer_ID,Purchased,Policy,Price
Joe,101,0,1,500
Joe,101,0,1,505
Joe,101,0,2,510
Joe,101,0,2,504
Joe,101,0,2,507
Joe,101,0,1,505
Joe,101,1,3,501
Mary,103,0,1,675
Mary,103,0,3,650
Mary,103,0,2,620
Mary,103,0,2,624
Mary,103,0,2,630
Mary,103,1,2,627
数据集2传输\u短路
Customer_Name , Customer_ID,Purchased,Policy, Price
Joe,101,1,3,501
Mary,103,1,2,627
需要在Transaction Short数据集中添加策略更改频率列,因此我的最终Transaction Short数据集如下所示
最终的数据集应该如下所示
Customer_Name , Customer_ID,Purchased, Policy, Price,Policy_ChangeFreq
Joe,101,1,3,501,3
Mary,103,1,2,627,2
在R中使用sqldf包使其正常工作
for (i in 1:nrow(Transaction_short)){
sql <- sprintf("SELECT policy from Transaction_long where customer_ID = %s",ML_Train_short$customer_ID[i])
df<- sqldf(sql)
NF <- sum(df$policy[-1]!= df$policy[-length(df$policy)])
ML_Train_short$Policy_Change_Freq[i] <- NF
}
for(i in 1:nrow(交易简称)){
sql