我想我可以采取简单的方法,我将使用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的功能?有任何想法吗?
谢谢!
旧论坛与更换单元格内容相关,但在我的情况下不起作用。
答案 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