2017-09-15 56 views
1

我有一个数据帧:改变数据帧变量值

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 

任何帮助,将不胜感激。

+0

如果我的解决方案帮助解决这个问题,你能接受吗 – PoGibas

回答

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输出(即字符)到数字
+2

或'sub',因为我们只是在做一次无妨。 –