1

我有兴趣找到使用索引替换数据框中多个级别的因子的最有效方法.....下面是我称之为“ph2”的数据框的示例,索引“index”,我的方法效率不高,尤其是当我们有大量替代品时。

index <- data.frame(
   AA = LETTERS[seq( from = 1, to = 5 )],
   BB = c("x1","x2","x3","x4","x5")
    )


ph2 <- data.frame(
    name = LETTERS[seq( from = 1, to = 5 )],
    RE = seq(1:5))


levels(ph2$name)[levels(ph2$name)=="A"] <- "X1"
levels(ph2$name)[levels(ph2$name)=="B"] <- "X2"
levels(ph2$name)[levels(ph2$name)=="C"] <- "X3"
levels(ph2$name)[levels(ph2$name)=="D"] <- "X4"
levels(ph2$name)[levels(ph2$name)=="E"] <- "X5"
4

1 回答 1

1

你可以做:

levels(ph2$name) <- paste0("X",ph2$RE[match(levels(ph2$name),ph2$name)])
levels(ph2$name)
#[1] "X1" "X2" "X3" "X4" "X5"

或者,如果它们已经像这里一样排序好:

levels(ph2$name) <- paste0("X",ph2$RE)
于 2018-11-27T14:35:32.493 回答