首页 > 解决方案 > 更改数据顺序数据框 R

问题描述

我有一个具有以下结构的数据框:

variable_1<-rep("one",times=8) 
variable_2<-c("one","one","two","two","three","three","four","four")
actual<-c(0,10,0,20,0,30,0,40)
predicted<-c(10,0,20,0,30,0,40,0)

data_1<-data.frame(cbind(variable_1,variable_2,actual,predicted))

我想移动列以获得具有以下结构的数据框:

variable_1_new<-rep("one",times=4)
variable_2_new<-c("one","two","three","four")
actual_new<-c(10,20,30,40)
predicted_new<-c(10,20,30,40)

data_2<-data.frame(cbind(variable_1_new,variable_2_new,actual_new,predicted_new))

任何帮助将不胜感激。

标签: rdataframe

解决方案


首先,确保以正确的格式读取您的数据:字符串不是因素

您可以通过删除 cbind来做到这一点

data_1<-data.frame(variable_1,variable_2,actual,predicted)

或通过将标志 stringsAsFactors设置为false

data_1<-data.frame(cbind(variable_1,variable_2,actual,predicted),stringsAsFactors = F)

为了能够计算实际列和预测列的总和,您首先必须列转换为数字

data_1$actual <- as.numeric(data_1$actual)
data_1$predicted <- as.numeric(data_1$predicted)

使用聚合计算列式总和

sums <- aggregate(data_1[c("actual","predicted")], data_1[c("variable_1","variable_2")], sum)

最后,您需要更改顺序

data_2 <- sums[order(sums$actual),]

推荐阅读