У меня есть dataframe как этотR: Создать 2 колонки с разностными и проценты значения другого столбца
ID <- c(101,101,101,102,102,102,103,103,103)
Pt_A <- c(50,100,150,20,30,40,60,80,90)
df <- data.frame(ID,Pt_A)
+-----+------+
| ID | Pt_A |
+-----+------+
| 101 | 50 |
| 101 | 100 |
| 101 | 150 |
| 102 | 20 |
| 102 | 30 |
| 102 | 40 |
| 103 | 60 |
| 103 | 80 |
| 103 | 90 |
+-----+------+
Я хочу создать 2 новых столбцов со значениями вычисленных из столбца Pt_A.
df$Del_Pt_A <- NthRow(Pt_A) - 1stRow(Pt_A) grouped by ID, where n = 1,2,...n
df$Perc_Pt_A <- NthRow(Del_Pt_A)/1stRow(Pt_A) grouped by ID, where n = 1,2,...n
Вот мой желаемый результат
+-----+------+---------+-----------+
| ID | Pt_A | Del_Pt_A | Perc_Pt_A|
+-----+------+---------+-----------+
| 101 | 50 | 0 | 0 |
| 101 | 100 | 50 | 1.0 |
| 101 | 150 | 100 | 2.0 |
| 102 | 20 | 0 | 0 |
| 102 | 30 | 10 | 0.5 |
| 102 | 40 | 20 | 1.0 |
| 103 | 60 | 0 | 0 |
| 103 | 80 | 20 | 0.3 |
| 103 | 90 | 30 | 0.5 |
+-----+------+---------+-----------+
я в настоящее время получить желаемый результат в MS Excel, но я хочу, чтобы научиться делать это в R, чтобы сделать свою работу эффективной. Я сталкивался с пакетами, такими как dplyr, plyr, data.table и т. Д., Но я не мог решить это с помощью этих. Может кто-нибудь, пожалуйста, помогите мне разобраться, как обойти это.
Fyi, ' NthRow (Del_Pt_A)/1stRow (Pt_A) 'упрощается до' NthRow (Pt_A)/1stRow (Pt_A) - 1'. Вот почему вы видите это в ответах ниже. – Frank
Спасибо @Frank, я заметил это сейчас. – Sharath