使用带有粘贴命令的 i 对 R 中的数据表中的数据进行子集化
Subsetting data in datatable in R using i with paste command
我有以下具有年度值的数据表 DT1:
Var1 Var2
NORM_FACTOR_2014 1.026
NORM_FACTOR_2015 0.781
我想根据我在脚本中作为年份参数传递的年份获取 Var2 值。也就是说,如果 Year=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
我正在获得价值。我不知道我做错了什么?
解决方案:我得到了这个解决方案,所以它在没有 get 函数的情况下也能工作:
DF <- DT1[Var1 == paste0("NORM_FACTOR_",Batch_Year),Var2]
我不知道我为什么要使用 get()。
谢谢你们抽出时间。
我想你的意思是:
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)]
怎么样
extract<-DT1[substr(Var1,13,16)==Year,Var2]
这基本上就是@Marat Talipov 的建议,更像是
DT1[,yr:=substr(Var1,13,16)]
extract<-DT1[yr==Year,Var2]
我有以下具有年度值的数据表 DT1:
Var1 Var2
NORM_FACTOR_2014 1.026
NORM_FACTOR_2015 0.781
我想根据我在脚本中作为年份参数传递的年份获取 Var2 值。也就是说,如果 Year=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
我正在获得价值。我不知道我做错了什么?
解决方案:我得到了这个解决方案,所以它在没有 get 函数的情况下也能工作:
DF <- DT1[Var1 == paste0("NORM_FACTOR_",Batch_Year),Var2]
我不知道我为什么要使用 get()。
谢谢你们抽出时间。
我想你的意思是:
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)]
怎么样
extract<-DT1[substr(Var1,13,16)==Year,Var2]
这基本上就是@Marat Talipov 的建议,更像是
DT1[,yr:=substr(Var1,13,16)]
extract<-DT1[yr==Year,Var2]