R 合并类型因子的两列
我想将两个长度不同的列组合在一个列中,并使用R 合并类型因子的两列,r,dataframe,merge,R,Dataframe,Merge,我想将两个长度不同的列组合在一个列中,并使用唯一的因子,示例如下: list1 <- as.factor(c('1a','2r','6t')) list2 <- as.factor(c('1a','5p','3g','2341','7','2r')) 我试过rbind和data.frame,但它们似乎不能很好地处理不同长度的列。关于as.factor(唯一的(c(as.character(list1),as.character(list2)))?使用union在基R中: data.
唯一的
因子,示例如下:
list1 <- as.factor(c('1a','2r','6t'))
list2 <- as.factor(c('1a','5p','3g','2341','7','2r'))
我试过
rbind
和data.frame
,但它们似乎不能很好地处理不同长度的列。关于as.factor(唯一的(c(as.character(list1),as.character(list2)))
?使用union
在基R中:
data.frame(newlist=union(levels(list1), levels(list2)))
# newlist
#1 1a
#2 2r
#3 6t
#4 2341
#5 3g
#6 5p
#7 7
谢谢你的回答,效果很好,但我只有一个问题
newlist
是char
但是str(data.frame(…)
为什么是因子呢?data.frame
是否将值视为因子?@Y.Z.如果希望newlist
视为character
,只需使用stringsafactors=FALSE
。也就是说,data.frame(newlist=union(levels(list1),levels(list2)),stringsAsFactors=FALSE)
@,谢谢,有什么方法我只能保留两个列表之间的差异。例如,将结果转到newlist Usesetdiff
而不是union
。您可能希望通过单击向上/向下投票图标下方的复选标记来接受我的答案。
data.frame(newlist=union(levels(list1), levels(list2)))
# newlist
#1 1a
#2 2r
#3 6t
#4 2341
#5 3g
#6 5p
#7 7