我试图找到一种方法,将两列因素组合成一列,而不将因子级别更改为数字。例如,考虑以下两个data.frame数据集
dataset 1 dataset 2
Number Student Number Student
1 Chris 1 Matt
2 Sarah 2 Keith我试图把dataset1中的“学生”一栏和dataset2的“学生”一栏写成一个包含"Chris“、"Sarah”、"Matt“和"Keith”的大型学生专栏。
我试过:
student.list<-c(dataset1[,2],dataset2[,2])
student.list但是,这是不起作用的,因为名称用c()函数变成数字。我希望我的名单保留学生的名字(也就是说,不把它们转换成数字)。我也尝试了cbind(),但是给出了与c()相同的问题.
谢谢
发布于 2013-10-05 19:26:01
factors是碰巧有标签的数字。在组合因素时,通常是将它们的数值组合在一起。这常常会把人绊倒。
如果你想要他们的标签,你必须使用as.character强迫他们使用字符串。
student.list <- c( as.character(dataset1[,2]) ,
as.character(dataset2[,2]) )如果你想让它回到因子,把它都用as.factor包装(可以是一行,也可以分割成两行,以便更容易阅读)
student.list <- c(as.character(dataset1[,2]),as.character(dataset2[,2]))
student.list <- as.factor(student.list)发布于 2018-06-21 11:25:20
基R包中有interaction()函数。在strata()包中也有survival函数。
发布于 2013-10-05 20:52:50
data.table包以一些非常有用的方式扩展了数据帧的功能,当您使用rbindlist函数时,它将自动组合各种因素。另外,如果您的两个数据集很大,它通常会更快地组合它们。
library(data.table)
# Example data:
# (If you already have data frames, you can convert them using `as.data.table(dataframename)`)
dataset1<-data.table(Number=1:2,Student=as.factor(c("Chris","Sarah")))
dataset2<-data.table(Number=1:2,Student=as.factor(c("Matt","Keith")))
# Combine the two data sets:
# (It's not necessary to convert factors to characters)
rbindlist(list(dataset1,dataset2))
# Number Student
#1: 1 Chris
#2: 2 Sarah
#3: 1 Matt
#4: 2 Keithhttps://stackoverflow.com/questions/19201773
复制相似问题