我一直在努力在我的数据框中创建一些变量,如下所示:
df.1 <- data.frame(unit = c('A','B','C','A','B','C','D'),location = c(1,1,1,2,2,2,2), value.X = c('5','6', '4', '3','10', '7','3'),value.Y = c('1','4','7','9','4','6','4'),team = c('A / B', 'A / B', 'C' , 'A', 'B / C', 'B / C','D'),team.B = c('A / C ', 'A / C', 'B', 'A / B / D', 'A / B / D', 'C', 'A / B / D'),supra = c('A', 'B', 'C', 'A / C / D', 'B', 'A / C / D' , 'A / C / D'),pos.supra = c(1,2,3,1,2,1,1))
unit location value.X value.Y team team.B supra pos.supra
1 A 1 5 1 A / B A / C A 1
2 B 1 6 4 A / B A / C B 2
3 C 1 4 7 C B C 3
4 A 2 3 9 A A / B / D A / C / D 1
5 B 2 10 4 B / C A / B / D B 2
6 C 2 7 6 B / C C A / C / D 1
7 D 2 3 4 D A / B / D A / C / D 1
我需要创建一个变量,对不在value.X
和不在value.Y
的单位之间的差异求和。如果所讨论的单位等于一,那么它要么是第一,要么紧随其后。我在每个 中都需要这个。我知道步骤太多,所以这里有更详细的描述。也许您可以跳过或颠倒这些步骤的顺序。没关系。team.B
team
supra
pos.supra.1
pos.supra.1
unit
location
(1) 找到supra
排名第一或以下的队伍(如果单位有supra
withpos.supra
等于1
)
supra.I.need = c('B','A','A','B','A / C / D', 'B','B')
(2) 检查谁who.I.need
不在team
但在team.B
:
that.is.not.in.team.but.are.in.team.B = c('NA','NA','NA','B', 'A,D','NA','B')
( 3 ) 最后,计算上面变量中所有单位之间的差value.Y
并将它们相加(注意我对和的增量求和):value.X
A
D
delta = c('NA','NA','NA','8','2','NA','8')
因此,最终的数据框应如下所示:
df.2 <- data.frame(unit = c('A','B','C','A','B','C','D'),location = c(1,1,1,2,2,2,2), value.X = c('5','6', '4', '3','10', '7','3'),value.Y = c('1','4','7','9','4','6','4'),team = c('A / B', 'A / B', 'C' , 'A', 'B / C', 'B / C','D'),team.B = c('A / C ', 'A / C', 'B', 'A / B / D', 'A / B / D', 'C', 'A / B / D'),supra = c('A', 'B', 'C', 'A / C / D', 'B', 'A / C / D' , 'A / C / D'),pos.supra = c(1,2,3,1,2,1,1),supra.I.need = c('B','A','A','B','A / C / D', 'B','B'),that.is.not.in.team.but.are.in.team.B = c('NA','NA','NA','B', 'A,D','NA','B'),delta = c('NA','NA','NA','8','2','NA','8'))
unit location value.X value.Y team team.B supra pos.supra supra.I.need that.is.not.in.team.but.are.in.team.B delta
1 A 1 5 1 A / B A / C A 1 B NA NA
2 B 1 6 4 A / B A / C B 2 A NA NA
3 C 1 4 7 C B C 3 A NA NA
4 A 2 3 9 A A / B / D A / C / D 1 B B 8
5 B 2 10 4 B / C A / B / D B 2 A / C / D A,D 2
6 C 2 7 6 B / C C A / C / D 1 B NA NA
7 D 2 3 4 D A / B / D A / C / D 1 B B 8
任何帮助将非常感激。