【发布时间】:2016-06-11 17:38:56
【问题描述】:
我正在尝试根据网格正方形 ID 将区域分配给 R 中数据框中的观察值。我有以下数据框(df):
year month square
1 2000 2 A1
2 2000 2 B2
3 2000 2 H5
4 2000 2 J9
5 2000 2 A2
6 2000 3 N8
7 2000 3 M9
8 2000 3 C7
我想为“区域”添加另一列,根据方格将每个观测值分配给“北”、“东”、“南”或“西”。我尝试了以下 for 循环,但没有做任何事情,
for(i in 1:length(df$square)) {
for(j in 1:length(N)) {
if(df$square[i]==N[j]){
df$area[i]=="N"}
}
}
for(i in 1:length(df$square)) {
if(any(df$square==N)==T){
df$area[i]=="North"}
}
其中“N”是我创建的包含位于北方的正方形的对象,即:
N <- c("A1","A2","B2")
我确实找到了以下相关问题,但我想知道涉及字符时是否有所不同:Assign a group number based on another column by group in R
任何帮助将不胜感激。谢谢
【问题讨论】:
-
尝试构建一个查找“data.frame”,将每个正方形映射到其区域,然后使用类似
lookup$area[match(df$square, lookup$square)] -
df$area = NA; df$area[df$square %in% N] = "N"将适用于您显示的单个矢量。最好的方法可能是制作一个包含area和square列的数据框作为查找表,然后只使用merge(或match,如上所述)。