【发布时间】:2021-06-02 09:04:58
【问题描述】:
我有一个小标题,其中行和列是相同的 ID,我想取平均值(忽略 NA)以使 df 对称。我正在努力看看如何。
data <- tibble(group = LETTERS[1:4],
A = c(NA, 10, 20, NA),
B = c(15, NA, 25, 30),
C = c(20, NA, NA, 10),
D = c(10, 12, 15, NA)
)
我通常会这样做
A <- as.matrix(data[-1])
(A + t(A))/2
但由于 NA,这不起作用。
编辑:下面是预期的输出。
output <- tibble(group = LETTERS[1:4],
A = c(NA, 12.5, 20, 10),
B = c(12.5, NA, 25, 21),
C = c(20, 25, NA, 12.5),
D = c(10, 21, 12.5, NA))
【问题讨论】:
-
你的预期输出是什么?
-
可能先是
A[is.na(A)] <- 0,然后是(A + t(A))/2。 -
没有。这不起作用,因为在取平均值时你将非 NA 值减半
标签: r dplyr tidyverse data-processing symmetric