首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >合并dataframe和cbind列表

合并dataframe和cbind列表
EN

Stack Overflow用户
提问于 2017-08-09 22:39:45
回答 1查看 507关注 0票数 0

我从数据集中提取变量y的相加值、最大值和平均值以及x的最大值。

我还得到了最大x值的y值。

我使用cbind函数汇集了这些值。我想用数据格式来merge这个列表,但是

代码语言:javascript
复制
error:Error in sort.list(bx[m$xi]) : 'x' must be atomic for 'sort.list'
Have you called 'sort' on a list?

此外,我尝试了unlist函数,但没有给我满意的数据。

下面是我使用的代码:

代码语言:javascript
复制
AUC<-lapply(split(data_example, data_example$class), function(d) sum(d$y))
max.y<-lapply(split(data_example, data_example$class), function(d) max(d$y))
max.x<-lapply(split(data_example, data_example$class), function(d) max(d$x))
auc.mean<-lapply(split(data_example, data_example$class), function(d) mean(d$y))
x.ymax<-lapply(split(data_example, data_example$class), function(d) 
d$x[which.max(d$y)])

data1<-cbind(AUC,max.y,max.x, auc.mean, x.ymax)

datafinal<-merge(data1, data_merge, by="class")

在这里,我上传了用于复制示例的数据:

1 http://www.filedropper.com/datamerge

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-08-09 23:44:59

cbind没有工作的原因是因为对象是list的。

1)lapply替换为sapply以获得vector输出

代码语言:javascript
复制
AUC <- sapply(split(data_example$y, data_example$class), sum)

类似于其他情况,然后是cbind,就像OP中的那样。

2)作为对象是lists,我们对其进行unlist,然后使用cbind

代码语言:javascript
复制
data1 <- data.frame(AUC = unlist(AUC),max.y = unlist(max.y), 
   max.x = unlist(max.x), auc.mean = unlist(auc.mean), 
   x.ymax = unlist(x.ymax), class = names(AUC))
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45601687

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档