条件替换列内容 - 要更新的许多ID

时间:2015-01-21 01:52:26

标签: r

我想我可以采取简单的方法,我将使用elseif替换整个数据集中的id代码。我有一个带有id列的特定数据集。我必须用更新的id替换这些旧的id,但是有50k +行,有270个唯一ID。所以,我第一次尝试:

df$id<- ifelse(df$id==  2,  1,
ifelse(df$id==  3,  5,
ifelse(df$id ==  4,  5,
ifelse(df$id==  6,  NA,
ifelse(df$id==  7,  7,
ifelse(df$id== 285, NA,
ifelse(df$id==  8,  10,.....
ifelse(df$id=200, 19, df$id)

虽然这会有效,但我只限于51个巢穴,我不能将它们分开,因为它只有1/4。然后,由于代码重叠,上半部分的更新会发生干扰。

然后我尝试了

df$id[df$id== 2]  <- 1

我打算为每个代码执行此操作。但是,如果我将所有两个更新为一个,仍然有一个后来的代码,其中旧的和新的“1”将成为X数字,我只希望旧的“1”成为X ...我实际上认为这需要即使51不是限制,否则if if else。一个类似于Excel中的vlookup的功能?有任何想法吗?

谢谢!

旧论坛与更换单元格内容相关,但在我的情况下不起作用。

Replace contents of factor column in R dataframe

1 个答案:

答案 0 :(得分:1)

部分示例

df <- data.frame(id=seq(1, 10))
old.id <- c(2, 3, 4, 6)
new.id <- c(1, 5, 5, NA)

df$id[df$id %in% old.id] <- new.id[unlist(sapply(df$id, function(x) which(old.id==x)))]

输出

> df
   id
1   1
2   1
3   5
4   5
5   5
6  NA
7   7
8   8
9   9
10 10