У меня есть фрейм данных, в котором решение имеет различные составляющие общей сущности. Значение 0 означает, что у него нет этой составляющей, а значение 1 означает, что у него есть эта составляющая. Если имеется более одной составляющей (т.е. более одного значения решения = 1), то в целом = «более одного» и отдельные составляющие декодируются в декодированные переменные.
df1 <- data.frame (solution0 = "0", solution1 = "1", solution2 = "0", solution3 = "1", overall = "more than one", decoded0 = "", decoded1 = "aluminum", decoded2 = "", decoded3 = "hydrogen")
Если только одно решение = 1 (т. Е. Только одна составляющая), тогда эта составляющая отображается на общее значение, и декодированные переменные являются пустыми, как в двух следующих примерах:
df2 <- data.frame (solution0 = "0", solution1 = "1", solution2 = "0", solution3 = "0", overall = "aluminum", decoded0 = "", decoded1 = "", decoded2 = "", decoded3 = "")
df3 <- data.frame (solution0 = "0", solution1 = "0", solution2 = "0", solution3 = "1", overall = "hydrogen", decoded0 = "", decoded1 = "", decoded2 = "", decoded3 = "")
Что у меня есть до сих пор:
df1$overall <- case_when(
sum(df1$solution0 + df1$solution1 + df1$solution2 + df1$solution3) > 1 ~ 'more than one',
TRUE ~ ''
)
df1$decoded0 <- ifelse(df1$solution0 == "1" & sum(df1$solution0 + df1$solution1 + df1$solution2 + df1$solution3) > 1, "lithium", "")
df1$decoded1 <- ifelse(df1$solution1 == "1" & sum(df1$solution0 + df1$solution1 + df1$solution2 + df1$solution3) > 1, "aluminum", "")
df1$decoded2 <- ifelse(df1$solution2 == "1" & sum(df1$solution0 + df1$solution1 + df1$solution2 + df1$solution3) > 1, "sodium", "")
df1$decoded3 <- ifelse(df1$solution3 == "1" & sum(df1$solution0 + df1$solution1 + df1$solution2 + df1$solution3) > 1, "hydrogen", "")
Я не знаю, как запрограммировать логи c "Если только одно решение = 1 (т.е. только одна составляющая), а остальные = 0, то эта составляющая с = 1 отображается на все "в первом случае case_when.