全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 R语言论坛
1197 2
2020-07-02
悬赏 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

大小:18.5 KB

 马上下载

B.xls

大小:18.5 KB

 马上下载

A.xls

大小:18.5 KB

 马上下载

二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

全部回复
2020-7-3 12:54:00
简单问题又被复杂化了,读数据形成dataframe,然后用left_join()就可以完成你的想法,根本不需要循环
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

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

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

相关推荐
栏目导航
热门文章
推荐文章

说点什么

分享

扫码加好友,拉您进群
各岗位、行业、专业交流群