У меня есть фрейм данных, который выглядит следующим образом:
group1<-c(rep(1,12))
group2<-c(rep('Low',6), rep('High',6))
var <-c(1:6,1:6)
var1 <-c(2:13)
var2 <-c(20:31)
df1<-data.frame(group1,group2,var,var1,var2)
group1<-c(rep(2,12))
group2<-c(rep('Low',6), rep('High',6))
var <-c(1:6,1:6)
var1 <-c(2:13)
var2 <-c(20:31)
df2<-data.frame(group1,group2,var,var1,var2)
df<-rbind(df1,df2)
group1 group2 var var1 var2
1 1 Low 1 2 20
2 1 Low 2 3 21
3 1 Low 3 4 22
4 1 Low 4 5 23
5 1 Low 5 6 24
6 1 Low 6 7 25
7 1 High 1 8 26
8 1 High 2 9 27
9 1 High 3 10 28
10 1 High 4 11 29
11 1 High 5 12 30
12 1 High 6 13 31
13 2 Low 1 2 20
14 2 Low 2 3 21
15 2 Low 3 4 22
16 2 Low 4 5 23
17 2 Low 5 6 24
18 2 Low 6 7 25
19 2 High 1 8 26
20 2 High 2 9 27
21 2 High 3 10 28
22 2 High 4 11 29
23 2 High 5 12 30
24 2 High 6 13 31
Я хочу нормализовать свои столбцы следующим образом.Для каждой комбинации group1
и group2
я хочу разделить столбцы var1
и var1
с их первым элементом.Это позволяет мне построить общую шкалу / индекс по интересующим колонкам.Например, глядя на комбинацию group1=1
и group2=low
, соответствующие элементы var1
должны быть преобразованы в 2/2,3/2,4/2,5/2,6/2,7/2
соответственно, для комбинации group1=1
и group2=High
должно быть 8/8,9/8,10/8,11/8,12/8,13/8
и так далее.
Я хочу выполнить вышеуказанные преобразования как для var1
, так и для var2
.Ожидаемый результат должен выглядеть следующим образом:
group1 group2 var var1 var2 var1_tra var2_tra
1 1 Low 1 2 20 1.000 1.000000
2 1 Low 2 3 21 1.500 1.050000
3 1 Low 3 4 22 2.000 1.100000
4 1 Low 4 5 23 2.500 1.150000
5 1 Low 5 6 24 3.000 1.200000
6 1 Low 6 7 25 3.500 1.250000
7 1 High 1 8 26 1.000 1.000000
8 1 High 2 9 27 1.125 1.038462
9 1 High 3 10 28 1.250 1.076923
10 1 High 4 11 29 1.375 1.115385
11 1 High 5 12 30 1.500 1.153846
12 1 High 6 13 31 1.625 1.192308
13 2 Low 1 2 20 1.000 1.000000
14 2 Low 2 3 21 1.500 1.050000
15 2 Low 3 4 22 2.000 1.100000
16 2 Low 4 5 23 2.500 1.150000
17 2 Low 5 6 24 3.000 1.200000
18 2 Low 6 7 25 3.500 1.250000
19 2 High 1 8 26 1.000 1.000000
20 2 High 2 9 27 1.125 1.038462
21 2 High 3 10 28 1.250 1.076923
22 2 High 4 11 29 1.375 1.115385
23 2 High 5 12 30 1.500 1.153846
24 2 High 6 13 31 1.625 1.192308
ПРИМЕЧАНИЕ: Числа могут быть любыми, обычно положительными действительными числами, и поскольку мой массив данных действительно большой, я не могу знать заранее, что может бытьэлемент, с которым я хочу разделить, чтобы выполнить такие преобразования.