我有一個數據框,如下所示。將值分配給R中的特定列和行
Name Amount Subscriptionperiod(Months) Subscriptionstart (Month)
Tom 300 3 0
Tom 100 3 2
Jim 500 5 0
Jim 600 3 1
我想安排下面的數據。例如,湯姆在一筆交易中支付了300美元3個月。而在2個月後的第二筆交易中,他又支付了100美元3個月。
與Jim類似。
Name M0 M1 M2 M3 M4 M5 M6
Tom 300 300 300 0 0 0 0
Tom 0 0 100 100 100 0 0
Jim 500 500 500 500 500 0 0
Jim 0 600 600 600 0 0 0
我無法改造。我使用下面的代碼來完成第一部分。但是如何在Jim的情況下創建第二行,其中值從M2開始。 100美元從M2開始並繼續到M4。
for(i in 0:6) df <- within(df,assign(paste0("M",i),ifelse((Subscriptionperiod>i),amount,0)))
上面的代碼給出了不是我想要的以下輸出。幫助將不勝感激。
Name M0 M1 M2 M3 M4 M5 M6
Tom 300 300 300 0 0 0 0
Tom 100 100 100 0 0 0 0
Jim 500 500 500 500 500 0 0
Jim 600 600 600 0 0 0 0
而不是'paste(...,sep ='')',你也可以使用'paste0(...)' –
這樣可以跨越一個數據幀嗎?因爲我的來源是一個框架。 –
您需要先使用setDT(df)將數據轉換爲data.table。 Data.table被設計爲data.frame的擴展。除少數例外情況外,數據框架操作仍然有效,如果需要,通過setDF()轉換回來很簡單。 – NGaffney