R 基于其他列组中的值更改列组
我试图根据另一个对应列中的值是否为R 基于其他列组中的值更改列组,r,dplyr,tidyr,mutate,R,Dplyr,Tidyr,Mutate,我试图根据另一个对应列中的值是否为NA将一列中的值转换为NA。我需要对两大组对应的列执行此操作,这样我就不能逐个对每个列进行变异 例如,下面的2002inflationNext2Years变为NA,因为2002realReturnNext2Years是NA year <- c(2000, 2001, 2002) realReturnNext1Years <- c(.1,.2,.3) realReturnNext2Years <- c(.15,.25, NA) realRetur
NA
将一列中的值转换为NA
。我需要对两大组对应的列执行此操作,这样我就不能逐个对每个列进行变异
例如,下面的2002inflationNext2Years
变为NA
,因为2002realReturnNext2Years
是NA
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
因为我有很多专栏,所以我不能一次只做一个专栏。我试着用ifelse()
来测试mutate\u at
,但不确定如何测试年数是否一致
我有一个realReturn
列名向量和另一个inflation
列名向量。如果对应的realReturnColumn是NA
,我试图将膨胀列更改为NA
,但是如果realReturnColumn不是NA
,我们可以使用grep
收集“realReturnNext”列的索引,获取其NA
的位置,并将“inflationNext”列中的相应位置替换为NA
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
real\u cols
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