以下是一个示例数据数据集:
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
有没有办法使用apply函数循环遍历每一列但是最后一个并且总结一个值出现的次数只有在数据帧的最后一列中找到时(因此使用我的最后一列作为索引)搜索)?我知道我可以使用for循环执行此操作,但有点长,也许使用apply函数可以做到这一点?
答案 0 :(得分:1)
如果您要查找每行找到与最后一列的值相对应的值的次数,则可行:
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])))]
在您自己的代码之后。