R通过匹配两个数据集中的变量来创建新变量

时间:2015-05-21 00:52:24

标签: r

我有一个变量,我试图削减一个更易于管理的值。我将变量的唯一值列表导出到csv文件中,并在相邻列中为它们分配了更多通用名称。如,

EVTYPE  new_category

- x1    x
- x2    x
- x3    x
- x4    x
- y1    y
- y2    y
- y3    y

然后我将其上传回R,并尝试创建一个新变量,其中如果old_val = x1,new_var2 = x,依此类推。 old_val变量中有大约1,000个唯一值,因此嵌套ifelse语句或类似的东西确实是不可能的。以下是我正在处理的一些代码,但还无法开始工作,其中dataset =整个数据集,new_data =具有唯一值的数据集:(抱歉格式不佳,不知道如何正确执行上述列表)

ND_row_count <- NROW(new_data)
for (i in 1:ND_row_count){
  if (dataset$EVTYPE==new_data$EVTYPE2[i]) {
    dataset$new_category <- new_data$new_category[i]
    }
}

1 个答案:

答案 0 :(得分:3)

您可以使用向量化函数match

以下内容应返回(并指定给dataset$new_category)与原始值的长向量对应的新类别向量。

dataset$new_category <- new_data$new_category[match(dataset$EVTYPE, new_data$EVTYPE2)]

在上方,matchdataset$EVTYPE的每个元素找到匹配元素new_data$EVTYPE2的位置。然后,我们将索引向量用于子集new_data$new_category