我有一个矩阵
mat<-matrix(c(272,237,266,272,225,265,117,223,262,241,210,216,252,203,170),nrow=5,ncol=3,byrow=T)
[,1] [,2] [,3]
[1,] 272 237 266
[2,] 272 225 265
[3,] 117 223 262
[4,] 241 210 216
[5,] 252 203 170
有没有办法,如果第 N 列中的第一个元素不等于 272,则其余行等于第 N 列中的那个数字?如果它等于 272,我需要搜索跳到不等于 272 的行,然后执行相同的操作并让它向下传播?
因此,上述数据框中的示例将变为:
[,1] [,2] [,3]
[1,] 272 237 266
[2,] 272 237 266
[3,] 117 237 266
[4,] 117 237 266
[5,] 117 237 266
一种简单的方法是使用双 for 循环遍历整个事物,但这在 R 中将花费很长时间。还有比循环更好的过程吗?我知道在大多数情况下,不会有一个单一的答案。
我正在考虑使用 na.locf() 但这仅适用于 NA。如果满足某些条件,是否具有结转价值的功能?