Для каждой ячейки с надписью «x» могу ли я найти разницу между двумя строками в одном столбце?

#r

#r

Вопрос:

Менее недели использования R….

Если у меня есть фрейм данных, как показано ниже, и я хочу получить T2 из столбца a минус T1 из столбца A для всех данных…каков наилучший способ сделать это?

Я разбил его на разные фреймы данных, чтобы получить отдельные значения путем фильтрации Period == T1 и т.д… Но я пытаюсь понять, есть ли более эффективный способ обойти это.

 Period   a          b             c
T1       95.60      122.79       11.72
T2       78.91      90.37        2.07
T3       89.70      98.57        2.92
T4       98.78      109.00        1.73
T5       95.45      123.01        7.70
T6       99.35.     128.78       15.40
T1       92.60      123.79       11.72
T2       75.91      96.37        2.67
T3       87.70      98.57        2.92
T4       94.78      108.00        1.13
T5       92.45      121.01        7.30
T6       97.35.     122.78       15.20
 

То, что я хотел бы получить, это

 Period   a          b          c           d                     e
T1       95.60      122.79   11.72
T2       78.91      90.37    2.07    19.69 (T1-T2(a))     32.42(T1-T2(b))
T3       89.70      98.57    2.92
T4       98.78      109.00   1.73
T5       95.45      123.01   7.70.    3.9 (T6-T5(a))
T6       99.35.     128.78   15.40
T1       92.60      123.79   11.72
T2       75.91      96.37    2.67.   16.69 (T1-T2(a)).     27.42(T1-T2(b))      
T3       87.70      98.57    2.92
T4       94.78      108.00   1.13
T5       92.45      121.01   7.30
T6       97.35.     122.78   15.20.  39.55 (T6-T5(a)), etc.
 

Комментарии:

1. Если вы сможете показать желаемый результат для этого примера, возможно, вашу проблему можно будет лучше понять.

Ответ №1:

Вы это имеете в виду?

 result <- df$a[df$Period == 'T2'] - df$a[df$Period == 'T1']
 

Ответ №2:

Если вам нужны исчерпывающие различия для всех строк, вы можете использовать diff функцию и apply применить ее к своим столбцам. Пример:

 cars <- head(mtcars, 8)
cars
mpg cyl  disp  hp drat    wt  qsec vs am gear carb
Mazda RX4         21.0   6 160.0 110 3.90 2.620 16.46  0  1    4    4
Mazda RX4 Wag     21.0   6 160.0 110 3.90 2.875 17.02  0  1    4    4
Datsun 710        22.8   4 108.0  93 3.85 2.320 18.61  1  1    4    1
Hornet 4 Drive    21.4   6 258.0 110 3.08 3.215 19.44  1  0    3    1
Hornet Sportabout 18.7   8 360.0 175 3.15 3.440 17.02  0  0    3    2
Valiant           18.1   6 225.0 105 2.76 3.460 20.22  1  0    3    1
Duster 360        14.3   8 360.0 245 3.21 3.570 15.84  0  0    3    4
Merc 240D         24.4   4 146.7  62 3.69 3.190 20.00  1  0    4    2

apply(cars, 2, diff)
mpg cyl   disp   hp  drat     wt  qsec vs am gear carb
Mazda RX4 Wag      0.0   0    0.0    0  0.00  0.255  0.56  0  0    0    0
Datsun 710         1.8  -2  -52.0  -17 -0.05 -0.555  1.59  1  0    0   -3
Hornet 4 Drive    -1.4   2  150.0   17 -0.77  0.895  0.83  0 -1   -1    0
Hornet Sportabout -2.7   2  102.0   65  0.07  0.225 -2.42 -1  0    0    1
Valiant           -0.6  -2 -135.0  -70 -0.39  0.020  3.20  1  0    0   -1
Duster 360        -3.8   2  135.0  140  0.45  0.110 -4.38 -1  0    0    3
Merc 240D         10.1  -4 -213.3 -183  0.48 -0.380  4.16  1  0    1   -2