我有一个结构如下的数据帧:
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))
任何帮助都将不胜感激。
发布于 2018-09-28 03:33:41
首先,确保以的正确格式读取数据:字符串而不是因子
您可以通过删除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)
为了能够计算actual和predicted列的总和,您必须首先将列转换为
data_1$actual <- as.numeric(data_1$actual)
data_1$predicted <- as.numeric(data_1$predicted)
列总和是使用aggregate计算的
sums <- aggregate(data_1[c("actual","predicted")], data_1[c("variable_1","variable_2")], sum)
最后,您需要更改顺序
data_2 <- sums[order(sums$actual),]
https://stackoverflow.com/questions/52543332
复制相似问题