一个数据帧中的列如何重新排序?

如何更改此输入(顺序:时间,输入,输出,文件):


Time   In    Out  Files

1      2     3    4

2      3     4    5

对于此输出(顺序为:时间,输出,输入,文件)?


Time   Out   In  Files

1      3     2    4

2      4     3    5

这是虚拟R数据:


table <- data.frame(Time=c(1,2), In=c(2,3), Out=c(3,4), Files=c(4,5))

table

##  Time In Out Files

##1    1  2   3     4

##2    2  3   4     5


慕的地6264312
浏览 797回答 4
4回答

郎朗坤

您的数据框具有四列,如下所示df[,c(1,2,3,4)]。请注意,第一个逗号表示保留所有行,而1,2,3,4则指向列。像上面的问题一样更改顺序 df2[,c(1,3,2,4)]如果要将此文件输出为csv,请执行 write.csv(df2, file="somedf.csv")

莫回无

# reorder by column namedata <- data[c("A", "B", "C")]#reorder by column indexdata <- data[c(1,3,2)]

慕仙森

您还可以使用子集功能:data <- subset(data, select=c(3,2,1))您最好像在其他答案中一样使用[]运算符,但是了解您可以在单个命令中执行子集和列重新排序操作可能会很有用。更新:您还可以使用dplyr软件包中的select函数:data = data %>% select(Time, out, In, Files)我不确定效率,但是由于dplyr的语法,这种解决方案应该更加灵活,特别是在您有很多专栏的情况下。例如,以下内容将以相反的顺序重新排列mtcars数据集的列:mtcars %>% select(carb:mpg)并且以下内容将仅对某些列重新排序,并丢弃其他列:mtcars %>% select(mpg:disp, hp, wt, gear:qsec, starts_with('carb'))
打开App,查看更多内容
随时随地看视频慕课网APP