我有一个具有以下结构的数据框:
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))
任何帮助将不胜感激。
答案 0 :(得分:1)
首先,请确保以正确的格式读取数据:字符串不是因数
您可以通过删除绑定
来完成此操作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),]