[英]Best way to replace a lengthy ifelse structure in R
我有以下數據框
df = data.frame(Code=seq(80,105,1))
我需要添加從Code
列中獲取的另一列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"]
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.