循环遍历数据框中的所有列,如果某个列中存在值则求和

Loop through all columns in a dataframe and sum if value is present in a certain column

下面是一个示例数据数据集:

y<-c("A1","B1", "C2", "A1", "B1","C1", "A1","B2", "C3", "A1", "B1", "C4", "A1", "B1","C4", "A1","B2", "C4", "A1","B1", "C4", "A1", "B1", "C4")
     test<- data.frame(matrix(y, nrow = 3, ncol = 8))
     colnames(test) <- c("Learn_1", "Car_1", "Car_2", "Fan_1", "Fan_2", "Fan_3","Kart_1", "God_1")
     test

有没有一种方法可以使用应用函数循环遍历除最后一列以外的每一列,并且仅当在数据框的最后一列中找到某个值时才对值出现的次数求和(因此使用我的最后一列作为要搜索的索引)?我知道我可以使用 for 循环来执行此操作,但是有点长,也许可以使用应用函数来执行此操作?

如果您要查找每行与最后一列的值对应的值的出现次数,则此方法有效:

apply(test,1,FUN= function(x) length(which(x[-8]==x[8])))

您可以轻松地将其适应任意数量的列,甚至可以将其添加为新列。

编辑:

如果是针对整个数据集,那么可以使用:

test<-as.matrix(test);
table(test[,-8])[match(test[,8],names(table(test[,-8])))]

在你自己的代码之后。