У меня есть фрейм данных, например:
df <- data.frame(
type = c("BND", "INV", "BND", "DEL", "TRA"),
chrom1 = c(1, 1, 1, 1, 1),
chrom2 = c(1, 1, 2, 1, 3)
)
Я хочу переназначить все df[df$type=='BND',]
экземпляры на INV
или TRA
в зависимости от значений в chrom1
и chrom2
,
Я пытаюсь использовать fct_recode
из пакета forcats следующим образом:
library(forcats)
df$type <- ifelse(df$type=="BND",
ifelse(df$chrom1 == df$chrom2,
fct_recode(df$type, BND="INV"),
fct_recode(df$type, BND="TRA")),
df$type)
Однако это перекодирует мои коэффициенты в числа:
type chrom1 chrom2
1 1 1 1
2 3 1 1
3 1 1 2
4 2 1 1
5 4 1 3
Вот мой ожидаемый результат:
type chrom1 chrom2
1 INV 1 1 # BND -> INV as chrom1==chrom2
2 INV 1 1
3 TRA 1 2 # BND -> TRA as chrom1!=chrom2
4 DEL 1 1
5 TRA 1 3
Как я могу таким образом разделить фактор на два уровня?