国勢調査線が 8 つある ( L1:L8
)。現在、いくつかの記録は、国勢調査されたときNA
よりもむしろ0
持っています。対応するエフォート列 ( ) の値が 0 より大きい場合 (つまり、国勢調査されていることを意味します) 、各列 ( ) のすべてNA
をに置き換えたいと思います。0
L1:L8
EFFORT_L1:EFFORT_L8
サンプルデータ:
df <-structure(list(KARTA = c("02C2H", "02C2H", "02C2H", "02C2H",
"02C2H", "02C2H"), YEAR = c(1997L, 1997L, 1997L, 1997L, 1997L,
1997L), ART = c("009", "031", "012", "057", "065", "073"), L1 = c(NA,
NA, NA, NA, 2, NA), L2 = c(NA, NA, 7, NA, 3, NA), L3 = c(NA,
NA, NA, NA, 1, NA), L4 = c(NA, NA, NA, NA, 1, NA), L5 = c(NA,
NA, NA, NA, 1, NA), L6 = c(NA_real_, NA_real_, NA_real_, NA_real_,
NA_real_, NA_real_), L7 = c(NA, NA, NA, 1, NA, 1), L8 = c(NA_real_,
NA_real_, NA_real_, NA_real_, NA_real_, NA_real_), EFFORT_L1 = c(10,
10, 10, 10, 10, 10), EFFORT_L2 = c(10, 10, 10, 10, 10, 10), EFFORT_L3 = c(9.625,
9.625, 9.625, 9.625, 9.625, 9.625), EFFORT_L4 = c(10, 10, 10,
10, 10, 10), EFFORT_L5 = c(9.125, 9.125, 9.125, 9.125, 9.125,
9.125), EFFORT_L6 = c(9.75, 9.75, 9.75, 9.75, 9.75, 9.75), EFFORT_L7 = c(9.75,
9.75, 9.75, 9.75, 9.75, 9.75), EFFORT_L8 = c(10, 10, 10, 10,
10, 10), Total_Route_Effort = c(78.25, 78.25, 78.25, 78.25, 78.25,
78.25)), .Names = c("KARTA", "YEAR", "ART", "L1", "L2", "L3",
"L4", "L5", "L6", "L7", "L8", "EFFORT_L1", "EFFORT_L2", "EFFORT_L3",
"EFFORT_L4", "EFFORT_L5", "EFFORT_L6", "EFFORT_L7", "EFFORT_L8",
"Total_Route_Effort"), row.names = c(NA, 6L), class = "data.frame")
1 つの列のサンプル コード (8 つの列すべてに対して効率的なソリューションを探していることに注意してください):
df[is.na(df[,"L1"]) & df[,"EFFORT_L1"] > 0, "L1"] <- 0