我有一个数据框:
id,male,exposure,age,tol
9,0,1.54,tol12,1.79
9,0,1.54,tol13,1.9
9,0,1.54,tol14,2.12
9,0,1.54,tol11,2.23
但是,我希望年龄变量的值不是(11,12,13,14)(tol11,tol12,tol13,tol14)。我试过以下内容,但没有什么区别。
levels(tolerance_wide$age)[levels(tolerance_wide$age)==tol11] <- 11
levels(tolerance_wide$age)[levels(tolerance_wide$age)==tol12] <- 12
任何帮助都将不胜感激。
(来自Singer,Willett的数据)
答案 0 :(得分:2)
假设您的数据框名为foo
:
foo$age <- as.numeric(gsub("tol", "", foo$age))
id male exposure age tol
1: 9 0 1.54 12 1.79
2: 9 0 1.54 13 1.90
3: 9 0 1.54 14 2.12
4: 9 0 1.54 11 2.23
这里我们使用两个函数:
gsub
替换字符串中的模式(我们将tol
替换为""
)。 as.numeric
将gsub
输出(字符)转换为数字