替换R中冗长的ifelse结构的最佳方法
我有以下数据框替换R中冗长的ifelse结构的最佳方法,r,R,我有以下数据框 df = data.frame(Code=seq(80,105,1)) 我需要添加另一列tCode,该列通过code列计算得出代码的值范围很广。对于每个给定的范围,我需要为tCode指定一个特定的值。例如,我不能将cut功能用于此任务。范围和预期结果已提供给我。 我只能想到这个冗长的ifelse结构: df$tCode = ifelse(df$Code > 102, 81, ifelse(df$Code %in
df = data.frame(Code=seq(80,105,1))
我需要添加另一列tCode
,该列通过code
列计算得出<代码>代码的值范围很广。对于每个给定的范围,我需要为tCode
指定一个特定的值。例如,我不能将cut
功能用于此任务。范围和预期结果已提供给我。
我只能想到这个冗长的ifelse
结构:
df$tCode = ifelse(df$Code > 102, 81,
ifelse(df$Code %in% seq(101,102,1),80,
ifelse(df$Code %in% seq(99,100,1),79,
ifelse(df$Code %in% seq(97,89,1),78,
ifelse(df$Code %in% seq(95,96,1),77,
ifelse(df$Code %in% seq(92,94,1),76,
ifelse(df$Code %in% seq(90,91,1),75,
ifelse(df$Code %in% seq(88,89,1),74,
ifelse(df$Code %in% seq(86,87,1),73,
ifelse(df$Code %in% seq(84,85,1),72,
ifelse(df$Code %in% seq(82,83,1),71,
ifelse(df$Code %in% seq(80,81,1),70,1))))))))))))
我觉得这不是解决这个问题的最好办法。有更好的建议吗?找到一个匹配的表并合并 为了简洁起见,我将做第一对陈述,希望你能明白这一点:
library(data.table); setDT(df)
match_table <-
data.table(Code = c(89:102),
tCode = c(rep(78, 9), 79, 79, 80, 80))
df[match.table, tCode := tCode, on = "Code"]
库(data.table);setDT(df)
匹配您正在手动执行递归的表。将您正在进行的转换表示为一个函数。请参阅我的问题,了解更多选项@MichaelChirico,这很有意义。谢谢