📜  在 R 中的单个因子中连接两个给定因子

📅  最后修改于: 2022-05-13 01:55:48.468000             🧑  作者: Mango

在 R 中的单个因子中连接两个给定因子

R 编程中的因子变量可以组合形成向量和列表。因子类型对象的连接不像原始连接操作那样是可能的,因为它们不保留变量的“因子”类,这可能会导致数据歧义。

R 编程中任何存储对象的类都可以使用 sapply() 方法获取,该方法返回对象所属的数据类型或模式。

方法 1:使用unlist()方法

as.factor() 方法用于以因子格式而不是数字指定列向量。可以使用显式映射到使用此方法的因子的向量来声明两个输入因子。

R 语言中的 unlist() 方法用于提供从列表对象到向量的转换。它通过保留所有组件来简化生成向量,即保留元素的类。

句法:



其中 x 是列表或向量

这种方法保留了数据及其相应的级别。数据按照在 list() 方法中指定的顺序连接。

例子:

R
fac1 <- as.factor(c(1:5))
print ("Factor1 : ")
print (fac1)
sapply(fac1,class)
  
fac2 <- as.factor(c(8:10))
print ("Factor2 : ")
print (fac2)
sapply(fac2,class)
  
# combine into one factor
combined <- unlist(list(fac1,fac2))
print ("Combined Factor : ")
print (combined)
  
sapply(combined,class)


R
fac1 <- as.factor(letters[1:3])
print ("Factor1 : ")
print (fac1)
sapply(fac1,class)
  
fac2 <- as.factor(c(1:4))
print ("Factor2 : ")
print (fac2)
sapply(fac2,class)
  
# combine into one factor
combined <- unlist(list(fac1,fac2))
print ("Combined Factor : ")
print (combined)
  
sapply(combined,class)


R
fac1 <- factor(letters[1:3])
print ("Factor1 : ")
print (fac1)
sapply(fac1,class)
  
fac2 <- factor(c(1:4))
print ("Factor2 : ")
print (fac2)
sapply(fac2,class)
  
# extracting levels of factor1
level1 <- levels(fac1)[fac1]
  
# extracting levels of factor2
level2 <- levels(fac2)[fac2]
  
# combine into one factor
combined <- factor(c( level1,level2 ))
print ("Combined Factor : ")
print (combined)
  
sapply(combined,class)


输出

属于不同数据类型的因子类型对象也可以合并到因子类型元素的单一列表中。级别保留在此合并中。

例子:

电阻

fac1 <- as.factor(letters[1:3])
print ("Factor1 : ")
print (fac1)
sapply(fac1,class)
  
fac2 <- as.factor(c(1:4))
print ("Factor2 : ")
print (fac2)
sapply(fac2,class)
  
# combine into one factor
combined <- unlist(list(fac1,fac2))
print ("Combined Factor : ")
print (combined)
  
sapply(combined,class)

输出

方法 2:使用 factor() 方法

可以使用特定因子向量的 levels() 方法以独立字符串的形式提取各个级别。它返回与向量长度相等的元素数。

句法:

因为,这些级别都作为字符串返回,因此它们属于相同的数据类型。因此,现在使用 c() 方法将它们组合起来形成一个原子向量。

句法:

其中 vec1 和 vec2 是属于相同数据类型的向量

例子:

电阻

fac1 <- factor(letters[1:3])
print ("Factor1 : ")
print (fac1)
sapply(fac1,class)
  
fac2 <- factor(c(1:4))
print ("Factor2 : ")
print (fac2)
sapply(fac2,class)
  
# extracting levels of factor1
level1 <- levels(fac1)[fac1]
  
# extracting levels of factor2
level2 <- levels(fac2)[fac2]
  
# combine into one factor
combined <- factor(c( level1,level2 ))
print ("Combined Factor : ")
print (combined)
  
sapply(combined,class)

输出