我想将数据帧列表中的列名"名称"与数据帧"卷"的行名匹配,并对列执行计算。
我可以为此目的使用 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))