Мне нужна помощь в создании функции, которая выполняет следующие операции:
- создает новую переменную с именем
division
- , помещенную в каждую строку
r_n
переменной dT$division
результат деления значения соответствующей строки r_n
из dT$result1
на значение каждой строки dT$result1
для dt$treat == A
- создать новую переменную с именем
operation
- для каждой строки переменной
operation
execute dT$operation = (2*(dT$division-1))/(2*(dT$division-1)+1)
Где n
в r_n
- номер каждой строки во фрейме данных и принимает значения из1 to N
, а N - общее количество наблюдений или строк в кадре данных.
# пример данных
(примечание: отредактировано для добавления переменной id
, которая необходима для создания желаемой функции)
dT = read.table(header = TRUE, text = "
id group treat result1
1 0 A 0.1438
2 0 A 0.237
3 0 B 0.2774
4 0 B 0.2774
5 0 B 0.2093
6 0 C 0.1206
7 0 C 0.1707
8 0 C 0.0699
9 0 C 0.1351
10 1 C 0.1206
11 1 A 0.1438
12 1 A 0.237
13 1 B 0.2774
14 1 B 0.2774
15 1 B 0.2093
16 1 C 0.1206
17 1 C 0.1707
18 1 C 0.0699
19 1 C 0.1351
20 1 C 0.1206")
# вывод головки
(примечание: это случайная выборка строк из исходных данных, выбранных для облегчения иллюстрации концепции)
id group treat result1
1 0 A 0.014
2 0 A 0.02
3 0 B 0.20
4 1 A 0.14
5 1 B 0.27
# ожидаемый результат
(примечание: для dT $ Treat.denominator A2 и A3 в этом примере показан только визуальный элемент - поскольку мне нужно было опубликовать ожидаемый результат как можно скорее; это означает, что я рассчиталфактические значения переменных dT $ Division и операция dT $ только для dT $ Treat.denominator A1)
id group treat result1 treat.numerator treat.denominator division operation
1 0 A 0.01 A1 A1 1.00 0.00
2 0 A 0.02 A2 A1 1.64 0.56
3 0 B 0.20 B3 A1 20.00 0.97
4 1 A 0.14 A4 A1 14.00 0.96
5 1 B 0.27 B5 A1 27.00 0.98
1 0 A 0.01 A1 A2 1.00 0.00
2 0 A 0.02 A2 A2 1.64 0.56
3 0 B 0.20 B3 A2 20.00 0.97
4 1 A 0.14 A4 A2 14.00 0.96
5 1 B 0.27 B5 A2 27.00 0.98
1 0 A 0.01 A1 A3 1.00 0.00
2 0 A 0.02 A2 A3 1.64 0.56
3 0 B 0.20 B3 A3 20.00 0.97
4 1 A 0.14 A4 A3 14.00 0.96
5 1 B 0.27 B5 A3 27.00 0.98
Заранее благодарен за любую помощь.