我的数据集如下:
sample tmt key value
1 1 t0 11
1 2 t0 12
..
..
100 4 t100 121
我有大约400行。密钥的值为t0, t01, t03, t100
,表示以天为单位的时间,例如。 t0为0天,t01为第1天,t100为第100天。
目前,密钥的结构为as.factor
我需要将密钥转换为as.numeric
函数,使其显示为0,1,2...100
。对于每个样本,有几个相关的t0,t1s等。有没有一种简单的方法来做到这一点,而无需手动替换所有的t0,t1 ..等等?
答案 0 :(得分:4)
您可以使用gsub
替换。
library(dplyr)
df <- tibble(
sample = 1:100,
tmt = 1:100,
key = as.factor(paste0("t", 1:100)),
value = rnorm(100)
)
df %>% mutate(key = as.numeric(gsub("t", "", key)))
# # A tibble: 100 x 4
# sample tmt key value
# <int> <int> <dbl> <dbl>
# 1 1 1 1 -1.92796670
# 2 2 2 2 0.32439762
# 3 3 3 3 -1.09627047
# 4 4 4 4 -0.11293941
# 5 5 5 5 -1.33618028
# 6 6 6 6 0.26458634
# 7 7 7 7 -0.31001779
# 8 8 8 8 -0.76220697
# 9 9 9 9 0.09226835
# 10 10 10 10 1.27032132