gpt4 book ai didi

r - 替换 R 中冗长的 ifelse 结构的最佳方法

转载 作者:行者123 更新时间:2023-12-02 07:23:56 25 4
gpt4 key购买 nike

我有以下数据框

df = data.frame(Code=seq(80,105,1))

我需要添加另一列 tCodeCode 列计算。 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"]

关于r - 替换 R 中冗长的 ifelse 结构的最佳方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36390967/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com