楼主: ウ兴ウ
1682 8

[问答] 数据框分开合并 [推广有奖]

  • 0关注
  • 3粉丝

硕士生

24%

还不是VIP/贵宾

-

威望
0
论坛币
878 个
通用积分
41.8227
学术水平
13 点
热心指数
17 点
信用等级
11 点
经验
1108 点
帖子
62
精华
0
在线时间
227 小时
注册时间
2012-9-26
最后登录
2021-1-5

5论坛币
问题1
怎么由X,R两个数据框组合成这样的数据框呢

QQ图片201503181501571.png

问题2
要是X,R是函数变量,怎么来写?
即X,R是未知的。。但知道他们是数据框而已,具体的数值不知道


  1. before<c(99.54,96.52,99.36,92.83,91.71,95.35,96.09,99.27,94.76,84.8)
  2. dead<c(60.27,59.67,43.91,58.99,35.4,44.71,49.81,31.69,22.91,81.49)
  3. children_dead<-c(16.15,20.1,15.6,17.04,15.01,13.93,17.43,13.89,19.87,23.63)
  4. data<-data.frame(before,-dead,-children_dead)
  5. rank<-apply(data,2,rank)
  6. R<-rank
  7. X<-data
复制代码

最佳答案

lanyajia 查看完整内容

对不起,刚才的函数没有粘全,完整的如下 问题2,函数的方法 dtcbn=function(d1,d2) { vlen=ncol(d1) vname=NULL dt=NULL for (i in 1:vlen) { if(length(dt)==0) dt=data.frame(X[,i],R[,i]) else dt=data.frame(dt,X[,i],R[,i]) vname=c(vname,paste("X",i,sep=""),paste("R",i,sep="")) } names(dt)=vname return(dt) } 函数调用 dtcbn(X,R)
关键词:数据框 Before 不知道 For 数据框合并
沙发
lanyajia 发表于 2015-3-20 14:17:50 |只看作者 |坛友微信交流群
对不起,刚才的函数没有粘全,完整的如下

  问题2,函数的方法
dtcbn=function(d1,d2) {
  vlen=ncol(d1)
  vname=NULL
  dt=NULL
  for (i in 1:vlen) {
    if(length(dt)==0) dt=data.frame(X[,i],R[,i]) else dt=data.frame(dt,X[,i],R[,i])
    vname=c(vname,paste("X",i,sep=""),paste("R",i,sep=""))
  }
  names(dt)=vname
  return(dt)
}

函数调用
dtcbn(X,R)

使用道具

藤椅
lanyajia 发表于 2015-3-20 16:31:49 |只看作者 |坛友微信交流群
问题1,直接的方法
dt=data.frame(X[,1],R[,1],X[,2],R[,2],X[,3],R[,3])
names(dt)=c("X1","R1","X2","R2","X3","R3")

问题2,函数的方法
dtcbn=function(d1,d2) {
  vlen=ncol(d1)
  vname=NULL
  dt=NULL
  for (i in 1:vlen) {
    if(length(dt)==0) dt=data.frame(X[,i],R[,i]) else dt=data.frame(dt,X[,i],R[,i])
    vname=c(vname,paste("X",i,sep=""),paste("R",i,sep=""))
  }

函数调用
dtcbn(X,R)
已有 1 人评分论坛币 收起 理由
李会超 + 40 精彩帖子

总评分: 论坛币 + 40   查看全部评分

使用道具

板凳
ウ兴ウ 发表于 2015-3-20 16:38:15 |只看作者 |坛友微信交流群

  sapply(1:ncol(X), function(i) data.frame(X[,i],R[,i]))
这样跑不出来的?

使用道具

报纸
ウ兴ウ 发表于 2015-3-20 16:39:39 |只看作者 |坛友微信交流群
lanyajia 发表于 2015-3-20 16:36
对不起,刚才的函数没有粘全,完整的如下

  问题2,函数的方法
能用批量函数写吗?简单点的

使用道具

地板
ウ兴ウ 发表于 2015-3-20 16:39:46 |只看作者 |坛友微信交流群
lanyajia 发表于 2015-3-20 16:36
对不起,刚才的函数没有粘全,完整的如下

  问题2,函数的方法
能用批量函数写吗?简单点的

使用道具

7
ウ兴ウ 发表于 2015-3-20 16:46:39 |只看作者 |坛友微信交流群
  1. rm( list = ls ( all = TRUE));
复制代码
可是输出结果却是这样的
  1. RSR(ys,c(1,-1,-1))
  2.        [,1]  [,2]  [,3]
  3. [1,] 99.54 60.27 16.15
  4. [2,] 96.52 59.67 20.10
  5. [3,] 99.36 43.91 15.60
  6. [4,] 92.83 58.99 17.04
  7. [5,] 91.71 35.40 15.01
  8. [6,] 95.35 44.71 13.93
  9. [7,] 96.09 49.81 17.43
  10. [8,] 99.27 31.69 13.89
  11. [9,] 94.76 22.91 19.87
  12. [10,] 84.80 81.49 23.63
  13. [11,] 10.00  2.00  6.00
  14. [12,]  7.00  3.00  2.00
  15. [13,]  9.00  7.00  7.00
  16. [14,]  3.00  4.00  5.00
  17. [15,]  2.00  8.00  8.00
  18. [16,]  5.00  6.00  9.00
  19. [17,]  6.00  5.00  4.00
  20. [18,]  8.00  9.00 10.00
  21. [19,]  4.00 10.00  3.00
  22. [20,]  1.00  1.00  1.00
复制代码

。。。。我无语了


使用道具

8
lanyajia 发表于 2015-3-20 16:49:03 |只看作者 |坛友微信交流群
直接调用 dtcbn(X,R) 已经自动完成了对X数据框和R矩阵的所有列处理,为什么还要用sapply?

使用道具

9
ウ兴ウ 发表于 2015-3-20 16:51:17 |只看作者 |坛友微信交流群
lanyajia 发表于 2015-3-20 16:49
直接调用 dtcbn(X,R) 已经自动完成了对X数据框和R矩阵的所有列处理,为什么还要用sapply?
谢谢你的帮忙,我只是想减少代码量。。

使用道具

您需要登录后才可以回帖 登录 | 我要注册

本版微信群
加好友,备注cda
拉您进交流群

京ICP备16021002-2号 京B2-20170662号 京公网安备 11010802022788号 论坛法律顾问:王进律师 知识产权保护声明   免责及隐私声明

GMT+8, 2024-5-30 01:31