楼主: floydwang
229 2

[问答] 求R大神: 如何根据一个数据框元素位置 从而 调整或提取另一个数据框的元素? [推广有奖]

  • 0关注
  • 0粉丝

已卖:1份资源

高中生

25%

还不是VIP/贵宾

-

威望
0
论坛币
30239 个
通用积分
0
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
62 点
帖子
6
精华
0
在线时间
43 小时
注册时间
2010-7-4
最后登录
2020-8-12

楼主
floydwang 发表于 2016-10-14 17:06:44 |AI写论文
100论坛币
求大神帮帮忙!!
比如说有两个数据框:
A:    c1     c2     c3
  r1  1       2      3
  r2  4       5      6
  r3  7       8      9

B:    c1     c2     c3
  r1   4     5       1
  r2   8     2       3
  r3   0     7       1

我想 把 A 数据框 每一行按从大到小顺序排列,形成:
A:    c1     c2     c3
  r1  3       2      1
  r2  6       5      4
  r3  9       8      7


但是同时B数据框里的数也根据A数据框元素位置的变动而变动, 形成这样的数据框:
B:    c1     c2     c3
  r1   1     5       4
  r2   4     5       6
  r3   7     8       9


或者仅仅是根据A的变动,把B里的元素提取出来也行。

关键词:数据框 位置 映射 提取 数据框

沙发
floydwang 发表于 2016-10-14 19:10:04
手工顶

藤椅
floydwang 发表于 2016-10-14 19:11:30
已解决:http://cos.name/cn/topic/417855/  以下引用

a = matrix(c(3,5,6,2,1,9,8,7,4),3,3)
b = matrix(c(1,2,3,4,5,6,7,8,9),3,3,byrow = T)

##把a矩阵按行从大到小排列,则每行的元素排序矩阵 id_matrix为:
id_matrix = apply(a,1,function(x) order(x,decreasing = T))
##此时该矩阵的每一列对应矩阵a每一行元素的排序
##矩阵b对应变动后,形成的新矩阵b_new:
b_new = c()
for(i in 1:nrow(b)){
b_new= rbind(b_new,b[i,][id_matrix[,i]])
}



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

本版微信群
加好友,备注cda
拉您进交流群
GMT+8, 2025-12-31 02:53