【发布时间】:2020-08-09 20:57:12
【问题描述】:
我有两张桌子,Grow 和 Temp。 Grow 详细说明了我关注的每个区域的生长季节和非生长季节(这些是静态的),而 Temp 详细说明了这些相同区域的不同年份的每个月的平均温度(这些是列)。我试图确定生长季节和非生长季节的每年平均温度,但我遇到了如何选择列的问题 - 我正在使用grep,但不知道如何计算两位数的月份!
此时,我已经隔离了年份的每一列,并有一个一年的列名向量 - 类似于 "tmp_2001_1" "tmp_2001_2" "tmp_2001_3" ... "tmp_2001_11" "tmp_2001_12"。我还在一对变量中存储了生长季节的开始和结束,它们存储为代表月份的整数:start <- some number between 1 and 12、end <- some number between 1 and 12。但是当start 或end 有2 位数字时,我不知道如何让grep 识别生长季节。这就是我所拥有的适用于它们都是 1 位数字的情况:
grow_months <- grep(paste('tmp_','2001','_','[',start,'-',end,']',sep = ''), vector_of_column_names)
如果start 或end 是两位数,我该如何扩展它?
【问题讨论】:
-
不要试图在一行中完成所有这些。使用一行提取月份编号(您可以使用
gsub或stringr::str_extract)并转换为数字,然后使用第二行与您的开始和结束进行比较。 -
我会试试的!用两行来做更有意义。 @js86,我如何使用它来识别具有不同起点和终点的范围?
标签: r