我有以下数据表DT1,它具有年度值:
Var1 Var2
NORM_FACTOR_2014 1.026
NORM_FACTOR_2015 0.781
我希望根据我在脚本中作为年份参数传递的年份获取Var2值。所以说,如果我在2014年= 2014年运行,那么我显然应该将Var2 = 1.026存储在我的变量中。为此,我试图使用粘贴功能,但它不起作用。这是我正在尝试的:
DF< - DT1 [Var1 == get(paste0(“NORM_FACTOR _”,Year)),Var2]
Error in get(paste0("NORM_FACTOR_", Year)) :
object 'NORM_FACTOR_2014' not found
但是当我这样做的时候:
DF< - DT1 [Var1 ==“NORM_FACTOR_2014”,Var2]
DF [1] 1.026
我正在获得价值。我不知道我做错了什么?
解决方案:我得到了这个解决方案,所以它在没有获取功能的情况下工作:
DF< - DT1 [Var1 == paste0(“NORM_FACTOR _”,Batch_Year),Var2]
我不知道为什么我还在使用get()。
感谢您的时间。
答案 0 :(得分:2)
我认为你的意思是这样做:
DF <- DT1[DT1$Var1 == paste0("NORM_FACTOR_", Year), "Var2"]
我使用DT1$Var1
和“Var2”而非Var1
,因为我之前没有使用过attach(DT1)
。
修改强>:
替代:
DF <- DT1$Var2[DT1$Var1 == paste0("NORM_FACTOR_", Year)]
使用正则表达式:
DF <- DT1$Var2[grep(Year, DT1$Var1)]
答案 1 :(得分:1)
怎么样
extract<-DT1[substr(Var1,13,16)==Year,Var2]
这基本上是@Marat Talipov建议的,更像是
DT1[,yr:=substr(Var1,13,16)]
extract<-DT1[yr==Year,Var2]