r语言 - 如何将行元素与列元素匹配,并在 rstudio 中对它们执行计算



我想将数据帧列表中的列名"名称"与数据帧"卷"的行名匹配,并对列执行计算。

我可以为此目的使用 match 或 row.match 吗?

我正在尝试做这样的事情

Total <- as.data.frame(matrix(0, ncol = 5, nrow = 5))
for (i in 1:5) 
{
  print(List$S.No[i] * 100)
  for (j in 1:5) 
    {
    if (match(List$Name, colnames(Volume)), 2]))
    Value = Total + Volume[j]
    print(Value)
    }
}
print(Total) 

代码问题:

Total <- as.data.frame(matrix(0, ncol = 5, nrow = 5))
for (i in 1:5) 
{
  print(List$S.No[i] * 100)
  for (j in 1:5) 
    {
    if (match(List$Name, colnames(Volume)), 2]))
    # This match condition is not correct. I do not know how to call the column header
    Value = Total + Volume[i]
    # I want to add the data from the matching column to Total
    print(Value)
    }
 }
print(Total) 

我想读取 List$Name 中的第一个元素与相应的列匹配,提取该列并对其执行简单的加法,并将结果存储在数据帧"总计"中。我希望单独对行中的所有元素执行相同的操作。

List
S.No	Name
2	Ba
1	Ar
5	Ca
3	Bl
4	Bu
Volume
Ar	Ba	Bl	Bu	Ca	
-5.1275	1.3465	-1.544	-0.0877	3.2955	
-2.2385	1.5065	0.193	1.082	3.074	
-5.3705	1.1285	1.966	1.183	-1.9305	
-6.4925	1.5735	1.36	-0.0761	2.0875	
-5.068	0.9455	0.947	-0.7775	3.832	

我知道这可以在合并两个文件并使用 sapply 函数后完成。但是由于我想在数据帧"List"上使用 for 循环,我只想比较两个数据帧,并在循环结束后每次将结果分别存储到另一个数据帧。因此,合并文件无助于解决此问题。

实际列表数据帧

包含 23 条记录,实际卷数据帧包含 18000 条记录。

我正在尝试构建一个函数,但不确定此计算是否需要 for 循环。有没有更好、更简单的方法来执行此任务?

我不确定是否理解了你的答案。我认为您必须以这种方式更正代码:

for (i in 1: length(List$Name)) {
    for (j in 1:dim(Volume)[2]) {
        if(List$Name[i]==colnames(Volume[j])) Total[,i]<-Total[,i]+Volume[,j]
    }

}

我已经解决了这个问题中遇到的问题,使用代码将行元素与列元素匹配

match(List$Name[i], names(Volume))

最新更新