我的数据如下所示
> head(CPUE)
Lon.rect Lat.rect q1 q4
1 13.5 54.25 0.1930234 1.76096260
2 13.5 54.75 11.6866331 19.06265440
3 13.5 55.25 24.2532215 33.64530930
4 13.5 55.75 0.2113688 0.05731537
5 14.5 54.25 2.5600818 8.72482876
6 14.5 54.75 85.8657297 34.08524869
现在,我想做的是创建一个新列,该列具有多个类别(级别),基于子集“Lon.rect”和“Lat.rect”的数据组合。我想根据每列中的数据为类别命名不同的名称。例如,对于 Lon.rect = 13.5,Lat.rect = 54.25,新列中的类别名称将是“1A”,而在第二行,类别名称将是“1B”,因为 Lat.rect 包含不同的数据。第 5 行将是“2A”,依此类推。
"Lon.rect"
&"Lat.rect"
包含坐标(如果这对任何人都很重要)并有更多的组合。从 Lot 13.5 到 22.5 和 Lat 54.25 到 58.75。
我通过以下方式创建了一个名为“subdiv”的新列:
CPUE["subdiv"] <- NA
整个数据集现在看起来:
> head(CPUE)
Lon.rect Lat.rect q1 q4 subdiv
1 13.5 54.25 0.1930234 1.76096260 NA
2 13.5 54.75 11.6866331 19.06265440 NA
3 13.5 55.25 24.2532215 33.64530930 NA
4 13.5 55.75 0.2113688 0.05731537 NA
5 14.5 54.25 2.5600818 8.72482876 NA
6 14.5 54.75 85.8657297 34.08524869 NA
我知道我可以输入下面的所有内容,但这需要很长时间,因为它有很多数据。
CPUE$subdiv[CPUE$Lon.rect>=13 & CPUE$Lon.rect<=14 & CPUE$Lat.rect>=54.0 & CPUE$Lat.rect<=54.5] <- "1A"
CPUE$subdiv[CPUE$Lon.rect>=13 & CPUE$Lon.rect<=14 & CPUE$Lat.rect>=54.5 & CPUE$Lat.rect<=55.0] <- "1B"
CPUE$subdiv[CPUE$Lon.rect>=13 & CPUE$Lon.rect<=14 & CPUE$Lat.rect>=55.0 & CPUE$Lat.rect<=55.5] <- "1C"
我希望我的描述很清楚,否则请不要犹豫与我联系!如果有人对任何步骤有好的解决方案,请回信!谢谢!/菲利普
编辑:
关于我的问题的更多信息
上述列的名称;“1A”、“1B”和“2A”只是说明我希望源列之间的关系如何的示例,我真的想给它们命名其他东西,但是如果有人感兴趣,我在下面得到了一些很好的帮助这个的。
就我而言,我想以Lat.rect
从 37 开始的整数命名列。这 Lon.rect
会有点棘手。该名称由一个字母和一个数字组成,从 G3 开始(在本例中)。每个字母的最大数字是 9,然后下一个字母从 0 开始,因此 G9 之后的下一个名称将是 H0。
如果有帮助,我不需要脚本来为整个字母表进行这种组合。最小可能的组合(我所有的数据集,目前不需要)是 F9,最大 H9。
我还想首先使用 lat 名称,然后使用 lon 名称。如果首先交换 data.frame 中列的位置然后创建名称会更容易,这会很好。
第一行的完成组合将是“37G3”,然后是第二行“38G3”。第 5 行将是“37G4”。
如果有人能够帮助我完成第二部分,我将不胜感激!