我确信有一个简单的解决方案,但我使用R相对较新,所以感谢您的耐心等待!
我有两个数据集。第一个(DatA)有44列,长x行。第二个(DatB)有4列和22行。 DatB中的每一行对应于DatA中的两列。我做了一个函数来根据这些信息转换数据。但是,我必须输入22次函数 - 对于22行中的每一行(见下文)。 22行也不错,但最终DatB会非常大,而且必须手动输入所有内容。
a <- c(13,14,15,16)
datA <- matrix(sample(a, 100, replace=TRUE), ncol=2)
datB <- matrix(a, ncol=4)
change <- function(datX, bx, wx, verX,set) {
ifelse (datX[,bx:wx] == verX[set,1],1,
ifelse(datX[,bx:wx] == verX[set,2],2,
ifelse(datX[,bx:wx]==verX[set,3],3,4)))
}
set1 <- change(datA,1,2,datB,1)
set2 <- change(DatA,3,4,DatB,2)
set3 <- change(DatA,5,6,DatB,3)
set4 <- change(DatA,7,8,DatB,4)
.....
set22<- change(DatA,43,44,DatB,22)
有没有办法可以使用sapply?如果它是一个数据集中的一列,没问题。我只想使用:sapply(colnames(x), function(y) somefunction(x[,y]))
。这对我来说很棘手,因为我试图在DatA中同时循环2列,在DatB中循环1行。
所以更清楚一点,我不需要帮助我的功能,只需要应用于两个数据集。虽然如果一个不同的功能对此更好,我会对它持开放态度。
编辑了****以包含set1的样本数据。