我想逐行用零替换特定月份之后的月度值。我曾尝试在不同的列中开始调整数据框中的替换 NA 值,但没有成功。给定数据:
df <- structure(list(Mth1 = c(1L, 3L, 4L, 1L, 2L),
Mth2 = c(2L, 3L, 2L, 2L, 2L),
Mth3 = c(1L, 2L, 1L, 2L, 3L),
Mth4 = c(3L, 1L, 3L, 4L, 2L),
ZeroMth = c(1L, 3L, 2L, 4L, 3L)),
.Names = c("Mth1", "Mth2", "Mth3", "Mth4", "ZeroMth"), class = "data.frame",
row.names = c("1", "2", "3", "4", "5"))
> df
Mth1 Mth2 Mth3 Mth4 ZeroMth
1 1 2 1 3 1
2 3 3 2 1 3
3 4 2 1 3 2
4 1 2 2 4 4
5 2 2 3 2 3
我想使用 ZeroMth 列中的值来指定替换开始的月份。所需的输出是:
> df1
Mth1 Mth2 Mth3 Mth4
1 0 0 0 0
2 3 3 0 0
3 4 0 0 0
4 1 2 2 0
5 2 2 0 0
apply
在每一行 ( MARGIN = 1
)上使用,replace
最后一列中指定的索引后的值为零
t(apply(X = df, MARGIN = 1, function(x)
replace(x = x, list = x[NCOL(df)]:(NCOL(df)-1), values = 0)))
# Mth1 Mth2 Mth3 Mth4 ZeroMth
#1 0 0 0 0 1
#2 3 3 0 0 3
#3 4 0 0 0 2
#4 1 2 2 0 4
#5 2 2 0 0 3
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句