Mutate group of columns based on values in other group of columns
我正在尝试根据另一对应列中的值是否为
例如,下面,由于2002
1 2 3 4 5 6 7 8 9 10 11 12 13 | year <- c(2000, 2001, 2002) realReturnNext1Years <- c(.1,.2,.3) realReturnNext2Years <- c(.15,.25, NA) realReturnNext3Years <- c(.45, NA, NA) inflationNext1Years <- c(.02, .03, .07) inflationNext2Years <- c(.03, .05, .08) inflationNext3Years <- c(.04, .06, .09) data <- data.frame(year, realReturnNext1Years, realReturnNext2Years, realReturnNext3Years, inflationNext1Years, inflationNext2Years, inflationNext3Years) data year realReturnNext1Years realReturnNext2Years realReturnNext3Years inflationNext1Years inflationNext2Years inflationNext3Years 1 2000 0.1 0.15 0.45 0.02 0.03 0.04 2 2001 0.2 0.25 NA 0.03 0.05 0.06 3 2002 0.3 NA NA 0.07 0.08 0.09 |
我正试图将
1 2 3 4 | year realReturnNext1Years realReturnNext2Years realReturnNext3Years inflationNext1Years inflationNext2Years inflationNext3Years 2000 0.1 0.15 0.45 0.02 0.03 0.04 2001 0.2 0.25 NA 0.03 0.05 NA 2002 0.3 NA NA 0.07 NA NA |
由于我有很多列,所以我一次不能做一列。我尝试将
我有一个
我们可以使用
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | real_cols <- grep("^realReturnNext", colnames(data)) inflation_cols <- grep("^inflationNext", colnames(data)) data[inflation_cols][is.na(data[real_cols])] <- NA # year realReturnNext1Years realReturnNext2Years realReturnNext3Years #1 2000 0.1 0.15 0.45 #2 2001 0.2 0.25 NA #3 2002 0.3 NA NA # inflationNext1Years inflationNext2Years inflationNext3Years #1 0.02 0.03 0.04 #2 0.03 0.05 NA #3 0.07 NA NA |