从下面的行创建新列我拥有许多运动员在比赛期间的位置数据。每场比赛最多持续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