從下面的行創建新列我擁有許多運動員在比賽期間的位置數據。每場比賽最多持續30分鐘。我的數據的一個例子是:基於變量
> df
StartValue Athlete Quarter Position
1 0.00 Paul Q1 Bench
2 5.35 Paul Q1 Defender
3 19.26 Paul Q1 Bench
4 23.32 Paul Q1 Defender
5 0.00 Paul Q2 Bench
6 9.08 Paul Q2 Defender
7 13.11 Paul Q2 Defender
8 0.00 Paul Q3 Defender
9 7.36 Paul Q3 Defender
10 2.51 Paul Q3 Bench
11 6.44 Paul Q4 Bench
12 22.47 Paul Q4 Bench
13 0.00 Paul Q4 Defender
14 24.38 Paul Q4 Defender
15 11.36 Paul Q4 Defender
我現在想創建一個新列df$EndValue
這需要以下行的StartValue
,並將其放置在同一列。當一個季度的最後一次入場發生時,必須將30放入df$EndValue
。例如,前幾排是:
> df
StartValue Athlete Quarter Position EndValue
1 0.00 Paul Q1 Bench 5.35
2 5.35 Paul Q1 Defender 19.26
3 19.26 Paul Q1 Bench 23.32
4 23.32 Paul Q1 Defender 30.00
5 0.00 Paul Q2 Bench 9.08
我對data.frame預期的輸出將是:
Output <- data.frame(StartValue=c(0, 5.35, 19.26, 23.32,
0.00, 9.08, 13.11, 0,
2.51, 7.36, 0.0, 6.44,
11.36, 22.47, 24.38),
EndValue=c(5.35, 19.26, 23.32, 30,
9.08, 13.11, 30, 2.51,
7.36, 30, 6.44, 11.36,
22.47, 24.38, 30),
Athlete = c('Paul', 'Paul', 'Paul', 'Paul',
'Paul', 'Paul', 'Paul','Paul',
'Paul', 'Paul', 'Paul','Paul',
'Paul', 'Paul', 'Paul'),
Quarter = c('Q1', 'Q1', 'Q1', 'Q1',
'Q2', 'Q2', 'Q2', 'Q3',
'Q3', 'Q3', 'Q4', 'Q4',
'Q4', 'Q4', 'Q4'),
Position = c('Bench','Defender','Bench','Defender',
'Bench','Defender','Defender','Defender',
'Defender','Bench','Bench','Bench',
'Defender', 'Defender', 'Defender'))
我有這30節分鐘一節的許多運動員的數據,所以怎麼能我很快添加這個新專欄?
謝謝。
如果宿舍的長度各不相同,例如Q1 = 30分鐘和Q2 = 31分鐘,我該如何添加此項?謝謝! – user2716568
當我在更廣泛的數據集上運行這個函數時,df < - setDT(df)[,EndValue:= c(StartValue [1 :(。N-1)],30),by =。(Athlete,Quarter)]返回以下錯誤:'14:在[[.data.table'(setDT(df),,':='(EndValue,c(StartValue [1 :(.N - ...): RHS 1是長度2 (大於組92的大小(1)),最後1個元素將被丟棄。' – user2716568
是的,我有多達45名運動員,但他們的宿舍數量相同,他們的數字不同但是每個季度的排數都是 – user2716568