对于回路,在R中替换

对于回路,在R中替换,r,loops,replace,R,Loops,Replace,我有一个包含因子的数据框架 dat <- c("low", "high", "middle", "middle", "low", "low") dat <- factor(dat, levels = c("low", "middle", "high") lvl <- unique(sort(dat)) x <- seq(1,3,1) dat您可以使用ifelse,但对于此特定任务,您可以使用as.numeric dat <- as.numeric(dat) da

我有一个包含因子的数据框架

dat <- c("low", "high", "middle", "middle", "low", "low")
dat <- factor(dat, levels = c("low", "middle", "high")
lvl <- unique(sort(dat))
x <- seq(1,3,1)

dat您可以使用ifelse,但对于此特定任务,您可以使用as.numeric

dat <- as.numeric(dat)

dat这就是你想要做的吗

dat <- factor(c("low", "high", "middle", "middle", "low", "low"))
levels(dat) 
# [1] "high"   "low"    "middle"

lvl = c(99, 86, 123) # New names for level
levels(dat) = lvl
dat
# 86  99  123 123 86  86 
# Levels: 99 86 123

dat没有时间给出完整答案,但您需要查看
ifelse
,而不仅仅是
if
。您想要的输出会是什么样子?因此,我的实际数据集有一个时间段的字符向量(1850-1854、1855-18891890-1894,…),其中列出了完成研究的时间。它们都是5年期。我不能把字符改成数字,但我想画出一段时间内研究的频率。因此,我试图用
seq(1852.52007.5,5)
中的术语替换每个期间,该术语对应于该期间的级别。这有意义吗?ifelse语句有什么不同?我的实际示例需要替换为不同的序列。你能解释一下为什么你没有问你想要回答的问题吗?我的实际示例基于
LifeTables
包中的一个大型生命表数据集。概念是完全相同的,但唯一的区别是我的序列是
seq(1752.52007.5,5)
。使用我构造的'dat'-项来索引分配给该序列的变量名。我不想用级别替换它,我试图用一个序列来替换它,序列中的每个术语对应于级别中的相同术语,例如,
“high”
的级别为3。所以我想用序列的第三项来代替它。
dat <- factor(c("low", "high", "middle", "middle", "low", "low"))
levels(dat) 
# [1] "high"   "low"    "middle"

lvl = c(99, 86, 123) # New names for level
levels(dat) = lvl
dat
# 86  99  123 123 86  86 
# Levels: 99 86 123