Продолжая мой предыдущий сообщение, теперь я хочу сгруппировать по идентификатору (только для столбца 3 ) и вычислите медиану столбца (Point_B), а затем вычтите медианное значение из каждого значения в столбце (Point_B) в соответствующую группу. NA все равно должны быть возвращены.
Примечание. Я хочу, чтобы группировка идентификаторов применялась только к столбцу Point_B, а не к Point_A, поскольку я хочу вычислить медиану всего столбца Point_A и вычесть ее со значениями в Point_A.
Например
ID <- c("A","A","A","B","B","B","C","C","C")
Point_A <- c(1,2,NA,1,2,3,1,2,NA)
Point_B <- c(1,2,3,NA,NA,1,1,1,3)
df <- data.frame(ID,Point_A ,Point_B)
+----+---------+---------+
| ID | Point_A | Point_B |
+----+---------+---------+
| A | 1 | 1 |
| A | 2 | 2 |
| A | NA | 3 |
| B | 1 | NA |
| B | 2 | NA |
| B | 3 | 1 |
| C | 1 | 1 |
| C | 2 | 1 |
| C | NA | 3 |
+----+---------+---------+
Решение, представленное в моем предыдущем посте, вычисляет медианы без группировки по идентификатору. Вот
library(dplyr)
df %>%
mutate_each(funs(median=.-median(., na.rm=TRUE)), -ID)
Желаемый результат
+----+---------+---------+
| ID | Point_A | Point_B |
+----+---------+---------+
| A | -1 | -1 |
| A | 0 | 0 |
| A | NA | 1 |
| B | -1 | NA |
| B | 0 | NA |
| B | 1 | 0 |
| C | -1 | 0 |
| C | 0 | 0 |
| C | NA | 2 |
+----+---------+---------+
Как получить значения в Column3 с группировкой по ID?