У меня есть следующие данные:
structure(list(qnrA1 = c("0", "0", "0", "0", "0", "0", "0", "0",
"0", "0"), qnrB19 = c("0", "0", "0", "0", "0", "0", "0", "0",
"0", "0"), qnrB6 = c("0", "0", "0", "0", "0", "0", "0", "0",
"0", "0"), qnrB60 = c("0", "0", "0", "0", "0", "0", "0", "0",
"0", "0"), qnrS1 = c("0", "0", "0", "0", "0", "0", "0", "0",
"0", "0"), qnrS2 = c("0", "0", "0", "0", "0", "0", "0", "0",
"0", "0"), qnrS4 = c("0", "0", "0", "0", "0", "0", "0", "0",
"0", "0"), gyrA = c("S83L", "S83L", "S83L", "S83L", "S83L", "S83L, D87N",
"S83L", "S83L", "S83A", "S83L, D87N"), gyrB = c("0", "0", "0",
"0", "0", "0", "0", "0", "0", "0"), parC = c("0", "S80I", "0",
"0", "0", "S80I", "0", "0", "0", "S58I"), parE = c("0", "0",
"0", "0", "0", "0", "0", "D475E", "0", "0"), marR = c("1", "1",
"0", "1", "1", "1", "0", "1", "1", "0"), CIP = c(0.25, 1, 0.5,
0.25, 0.25, 8, 0.12, 0.25, 0.06, 16), NAL = c(128L, 256L, 256L,
256L, 64L, 256L, 64L, 128L, 32L, 256L)), row.names = c(NA, -10L
), class = c("tbl_df", "tbl", "data.frame"))
Что я хочу сделать, это сгруппировать все столбцы, кроме столбцов CIP / NAL, затем выполнить эквивалент count (), но я хочу создатьновые столбцы со значениями, найденными в CIP / NAL для каждой группы.Если максимальное значение в CIP равно значению NAL, я просто хочу это значение в столбце.Если они не равны, я хочу, чтобы они оба были в одной строке и столбце, разделенных знаком «-».Я пробовал следующее:
library(dplyr)
df %>%
group_by_at(vars(-c(CIP, NAL))) %>%
summarise(CIP = ifelse(min(as.numeric(CIP)) == max(as.numeric(CIP)),
median(as.numeric(CIP)),
paste(min(as.numeric(CIP)), max(as.numeric(CIP)), sep = "-")),
n = n())
Однако, когда я запускаю это, я получаю следующую ошибку:
Error in summarise_impl(.data, dots) :
Column `CIP` can't promote group 1 to numeric
Похоже, что ошибка возникает, когда мин (как .numeric (CIP)) = / = max (as.numeric (CIP)) для каждой группы, так как, кажется, все работает нормально, когда я меняю строку вставки на «0» в функции ifelse.Любые предложения относительно того, что означает эта ошибка?