R 替换因子级别中的元素

R 替换因子级别中的元素,r,R,问题相当直截了当。出于某种原因,我想不出一个简单的解决方案,我也无法在网上找到。假设这是我的数据,其中变量是一个因子: Time 8:10 8:15 8:30 8:45 10:10 10:15 10:45 我想把10到8的所有级别都转换,结果如下: Time 8:10 8:15 8:30 8:45 8:10 8:15 8:45 我怎样才能做到这一点?正如@Rui Barradas所建议的,您可以做到: Time <- as.factor(c( "8:10", "8:15", "8:30

问题相当直截了当。出于某种原因,我想不出一个简单的解决方案,我也无法在网上找到。假设这是我的数据,其中变量是一个因子:

Time
8:10
8:15
8:30
8:45
10:10
10:15
10:45
我想把10到8的所有级别都转换,结果如下:

Time
8:10
8:15
8:30
8:45
8:10
8:15
8:45

我怎样才能做到这一点?

正如@Rui Barradas所建议的,您可以做到:

Time <- as.factor(c(
"8:10",
"8:15",
"8:30",
"8:45",
"10:10",
"10:15",
"10:45"
))

factor(sub("^10", "8", Time))
[1] 8:10 8:15 8:30 8:45 8:10 8:15 8:45
Levels: 8:10 8:15 8:30 8:45

时间这里有一种方法:
时间我应该添加一个
来代替小时而不是分钟,对吗?只是再检查一下。不,照原样试试。此外,如果您不想放弃我在第一条评论中提到的级别,请仅使用
sub(.)
,不要将
因子
环绕在它周围。非常感谢您的回复和额外反馈。您也可以直接使用因子级别:
级别(时间)
levels(Time) <- sub("^10", "8", Time)
require(microbenchmark)
microbenchmark(factor(sub("^10", "8", Time)),
               levels(Time) <- sub("^10", "8", Time))

Unit: microseconds
                                 expr    min      lq     mean  median
        factor(sub("^10", "8", Time)) 56.254 57.9945 77.58347 58.6855
levels(Time) <- sub("^10", "8", Time) 27.932 28.9770 32.59209 30.4035