无法通过匹配另一列中给出的列名来对数据框列进行重新排序

时间:2018-07-18 18:27:20

标签: r dataframe

我正在尝试使用另一个数据帧中变量的内容对数据帧中的变量重新排序,但是它不起作用,我也不知道为什么。

任何帮助将不胜感激!

# Starting point 
df_main <- data.frame(coat=c(1:5),hanger=c(1:5),book=c(1:5),
                      bottle=c(1:5),wall=c(1:5))
df_order <- data.frame(order_var=c("wall","book","hanger","coat","bottle"),
                       number_var=c(1:5))

# Goal
df_goal <-  data.frame(wall=c(1:5),book=c(1:5),hanger=c(1:5),
                       coat=c(1:5),bottle=c(1:5))

# Attempt
df_attempt <- df_main[df_order$order_var]

2 个答案:

答案 0 :(得分:0)

在您df_order中,将stringsAsFactors = FALSE放入data.frame通话中。

答案 1 :(得分:0)

问题在于您将顺序作为一个因素,如果将其更改为字符,它将起作用:

df_goal <- df_main[as.character(df_order$order_var)]