如何将列中的当前数值替换为R中的另一个值?

如何将列中的当前数值替换为R中的另一个值?,r,R,我有一列包含多个13、14、15……一直到24。我想用相同的间隔1替换每个值,但从1开始,然后转到12(因此13=1,14=2,依此类推) 我尝试使用apply函数和ifelse语句来查看条件是否满足,是否更改为新值,但没有成功 任何帮助都将不胜感激 一个选项是match到match到具有unique值的值,假设列是有序的 match(df1$col, unique(df1$col)) match返回与表值匹配的“x”向量的位置索引,即唯一元素,即 match(c(12, 14, 12, 14

我有一列包含多个13、14、15……一直到24。我想用相同的间隔1替换每个值,但从1开始,然后转到12(因此13=1,14=2,依此类推)

我尝试使用apply函数和ifelse语句来查看条件是否满足,是否更改为新值,但没有成功


任何帮助都将不胜感激

一个选项是
match
match
到具有
unique
值的值,假设列是有序的

match(df1$col, unique(df1$col))
match
返回与
值匹配的“x”向量的位置索引,即
唯一
元素,即

match(c(12, 14, 12, 14), c(12, 14))
#[1] 1 2 1 2
或者使用
因子
,可以强制为
整数
,以返回因子的整数存储值,从1开始

as.integer(factor(df1$col))
数据
df1
x-min(x)+1
从当前值中减去12是否会返回您需要的值
x-12
@Dinho您可以直接在
factor
中执行此操作,即
factor(df1$col,levels=13:24,labels=c(month.abb[10:12],month.abb[1:9])v1@Dinho如果列中的值不是13:24,或者是字符,则它可以成为NAs,即它应该与我们在
因子中输入的
级别相匹配,我没有意识到这些值不是13:24-uu-u-u-;像一个符咒一样工作。向帮助者问好。还有解释。
df1 <- data.frame(col = rep(13:24, each = 3))