根据其他列组中的值突变列组

时间:2018-05-17 02:50:16

标签: r dplyr tidyr mutate

我正在尝试根据另一个相应列中的值是否NA将一列中的值转换为mutate。我需要为两大组相应的列执行此操作,因此我不能逐个inflationNext2Years每列。

例如,下面,2002 NA转为realReturnNext2Years,因为2002 NAyear <- 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

data

我试图将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 转换为:

mutate_at

由于我有很多列,所以我不能一次只做一列。我尝试将ifelse()realReturn一起使用,但不确定如何测试排队的年数。

我有inflation列名称的向量和NA列名称的另一个向量。如果相应的realReturnColumn为NA,我试图将通胀列更改为NA,但如果realReturnColumn不是EXAMPLE= path to where *.lmbd folder wil be stored DATA= path where val.txt and train.txt is present TOOLS=build/tools TRAIN_DATA_ROOT=test/make_caffe_data/train/ # path to trainfiles VAL_DATA_ROOT=test/make_caffe_data/val/ # path to test_files ,则保持通胀列相同。

1 个答案:

答案 0 :(得分:1)

我们可以使用grep收集“realReturnNext”列的索引,获取NA的位置,并将“inflationNext”列中的相应位置替换为NA的< / p>

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