我想根据另一个数据框的列中给出的文本变量对数据框的列进行排序(使用srtcolorder
来自data.table
)。比方说,我有第一个数据框(df1)
列命名和排序为“五”、“二”、“三”、“一”、“四”,并且有另一个df2$names
包含字符串变量的列 ( ) 的数据框排序为“一”、“二”、“三”、“四”、“五”。如何根据 中的变量对 df1 的列进行排序df2$names
?
我尝试使用setcolorder
如下:
gf3<-setcolorder(df1, key=df2$names)
并收到错误消息
setcolorder(df1, key = df2$names) 中的错误:未使用的参数(key = df2$names)
由于没有提供数据,我创建了虚拟数据框来模拟您尝试重新排列的数据。
第一个数据框 ,df1
包含字符列five
, two
, three
, one
, 并按以下four
顺序:
df1 <- data.frame(
five = character(),
two = character(),
three = character(),
one = character(),
four = character()
)
第二个数据框df2
包含一个单列names
,其标题为列名,df1
按它们的等价数字排序。
df2 <- data.frame(names = c('one', 'two', 'three', 'four', 'five'))
可以使用包含列索引或列名称的有序向量对数据框进行排序。在这种情况下,我们可以调用df1[, as.character(df2$names)]
sortdf1
的列。as.character()
用于将df1
列名的因子向量转换为字符串向量。
如果您热衷于使用data.table::setcolorder()
,则可以setcolorder(df1, as.character(df2$names))
改为致电。这种方法的一个好处是您不必将结果数据框分配给变量df1
。您的尝试没有奏效,因为 (1) 没有key
该setcolorder()
函数的参数(只有neworder
)并且 (2) 您df2$names
可能是一个因子向量(您可以通过调用来检查class(df2$names)
)。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句