data0 = data.frame(a=c(1,2,3,4),b=c("a","b","c","d"),c=c("1","2","3","4"))
data0[,2] = as.character(data0[,2])
data0[,3] = as.character(data0[,3])
class(data0[,2])
class(data0[,3])
data0[,2] = as.numeric(data0[,2])
data0[,3] = as.numeric(data0[,3])
class(data0[,2])
class(data0[,3])
data0[,2]
data0[,3]
在数据框data0
中,列b
确实是字符,但列c
实际上是数字。
我想将字符列转换为数字列,只有当'这说得通。
如果我运行上面的代码,则列c
会转换为我想要的数字,但是列b
会转换为我不想要的NA
。
如何转换'实际数字'列数字,而保持其他不变?
答案 0 :(得分:3)
来自all.is.numeric
包的HMisc
函数 - 结合dplyr
- 样式变异 - 在此处浮现:
library(Hmisc)
library(dplyr)
data0 %>%
mutate_if(all.is.numeric, as.numeric)
all.is.numeric
检查字符向量中的所有元素是否实际为数字,然后mutate_if
位将所有真实的列转换为数字。