如何将两列因子组合成一列而不将因子级别更改为数字

use*_*124 10 r

我试图找到一种方法将两列因子组合成一列而不将因子水平改为数字.例如,考虑以下两个data.frame数据集

  dataset 1                       dataset 2
  Number  Student                 Number Student
       1    Chris                      1    Matt
       2    Sarah                      2   Keith
Run Code Online (Sandbox Code Playgroud)

我正在尝试从数据集1中取出"学生"列,从数据集2中取出"学生"列,然后创建一个包含名称"Chris","Sarah","Matt"和"Keith"的大学生列.

我试过了:

  student.list<-c(dataset1[,2],dataset2[,2])
  student.list
Run Code Online (Sandbox Code Playgroud)

但是,这不起作用,因为名称变成带有c()函数的数字.我希望我的列表保留学生的姓名(即不将其转换为数字).我也试过cbind(),但是给出了与c()相同的问题......

谢谢

Ric*_*rta 12

factors 碰巧有标签的数字.组合因子时,通常会将它们的数值组合在一起.这经常会使一个人绊倒.

如果你想要他们的标签,你必须使用它们将它们强制转换为字符串 as.character

 student.list <- c( as.character(dataset1[,2]) ,
                    as.character(dataset2[,2])  )
Run Code Online (Sandbox Code Playgroud)

如果你想让它回到因素,将它全部包装as.factor (可以全部在一行中,或分成两行以便于阅读)

 student.list <- c(as.character(dataset1[,2]),as.character(dataset2[,2]))
 student.list <- as.factor(student.list)
Run Code Online (Sandbox Code Playgroud)

  • 我猜想有一个"组合"功能可以在你的基础上为你做这个...?编辑:猜不是,虽然`gdata`包改变`c`的因素有OP的预期行为. (2认同)

Vik*_*tor 5

interaction()基础 R 包中有函数。strata()包里还有功能survival