使用动态名称进行因子转换

时间:2019-08-19 21:32:21

标签: r dplyr categorical-data

我目前正在动态访问“两个”数据框的“ v”列,我想将其变成一个具有“一个”数据框水平的因子。当我在two [,variable]上使用factor()时,我目前得到NA。知道如何使它起作用吗?

one =data.frame(v=c("B","A"))
two = data.frame(v=c("A","B"))
variable = "v"
two[,variable] = factor(two[,variable] ,levels = one$v, ordered = TRUE)

   v
1 <NA>
2 <NA>

1 个答案:

答案 0 :(得分:2)

这里,“一个”也是data.frame,因此我们需要从“一个”中提取相应的列

two[, variable] <- factor(two[,variable] ,levels = one[, variable], ordered = TRUE)
two[, variable]
#[1] A B
#Levels: B < A

如果它是tibble,则two[, variable]仍然是具有一列的tibble。要提取列作为向量(如factor方法在vector上工作),我们可以使用$[[

two[[variable]] <- factor(two[[variable]], levels = one[[variable]], ordered = TRUE)

base R

中也可以使用

注意:OP首先显示了一个示例,其中levels = one。现在,它已更改为one$v。如果在创建“两个” data.frame

之后再次运行,它将起作用