楼主: forddong
1297 2

[有偿编程] R语言循环——用于2个矩阵的数据的分拣 [推广有奖]

  • 3关注
  • 0粉丝

已卖:437份资源

博士生

38%

还不是VIP/贵宾

-

威望
0
论坛币
807 个
通用积分
1.3011
学术水平
4 点
热心指数
7 点
信用等级
1 点
经验
4520 点
帖子
223
精华
0
在线时间
291 小时
注册时间
2005-10-30
最后登录
2026-1-14

楼主
forddong 发表于 2020-7-2 23:53:00 |AI写论文
5论坛币
在做实证分析的数据处理时经常会出现要对2个矩阵A、B的数据分拣,我用R语言双重循环来实现,但结果总是将循环指针指向矩阵末尾,无法达到预期,我不知问题出在哪里,恳请高人指点,悬赏5个金币。

问题描述如下:

现有A矩阵(是有很长数据的),B矩阵是A矩阵的一部分。现在想根据A,来填充B,但囿于不能直接填充,所以生成C来相应位置填充。

A矩阵中有3列(学号,姓名,分数)A的部分姓名、学号 与B矩阵中的是一样的,但B要短一些
学号

学号        姓名        分数
171621214        张三        96
171621236        李四        95
171621115        王五        95
171621225        赵六        94
171621244        孟八        93


B矩阵
学号        姓名
171621115        王五
171621225        赵六

我想根据A的数据,把B对应的分数填充上。但囿于不能修改B,所以生成一个C,对应位置填充“成绩”。可是成绩却都只填了A阵最后一行的93,好像循环指针停在那里了。不知为啥,如何修改?请高人指点。代码如下:

C矩阵

        V1        V2        V3
1        NA        NA        93
2        NA        NA        93


A<-read.csv('A.csv',header=TRUE)
B<-read.csv('B.csv',header=TRUE)
C<- matrix(nr=2,nc=3)
for(n in 1:2){
    for(m in 1:5){
      if(A[m,1]<-B[n,1])
{C[n,3]<-A[m,3]}
                  }
}
write.csv(C,file = "C.csv")

C.xls
下载链接: https://bbs.pinggu.org/a-3258343.html

18.5 KB

B.xls

18.5 KB

A.xls

18.5 KB

关键词:R语言 请高人指点 高人指点 数据处理 实证分析

沙发
llb_321 在职认证  发表于 2020-7-3 12:54:00
简单问题又被复杂化了,读数据形成dataframe,然后用left_join()就可以完成你的想法,根本不需要循环
已有 1 人评分论坛币 收起 理由
cheetahfly + 10 热心帮助其他会员

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

藤椅
forddong 发表于 2020-7-5 20:03:59
感谢大侠,我试过了,确实非常好用! 就是在数据导出时遇到一些小麻烦,dataframe文件格式直接导出来就排成了多行一列。我再看看其他输出语句。非常感谢您。

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

本版微信群
加好友,备注cda
拉您进交流群
GMT+8, 2026-1-27 07:04