如何将数据帧列转换为数字类型?
当前回答
蒂姆是对的,谢恩有个遗漏。以下是其他例子:
R> df <- data.frame(a = as.character(10:15))
R> df <- data.frame(df, num = as.numeric(df$a),
numchr = as.numeric(as.character(df$a)))
R> df
a num numchr
1 10 1 10
2 11 2 11
3 12 3 12
4 13 4 13
5 14 5 14
6 15 6 15
R> summary(df)
a num numchr
10:1 Min. :1.00 Min. :10.0
11:1 1st Qu.:2.25 1st Qu.:11.2
12:1 Median :3.50 Median :12.5
13:1 Mean :3.50 Mean :12.5
14:1 3rd Qu.:4.75 3rd Qu.:13.8
15:1 Max. :6.00 Max. :15.0
R>
我们的data.frame现在有了因子列的摘要(counts)和as.numeric()的数值摘要(这是错误的,因为它得到了数值因子级别)以及as.numeric(as.character())的(正确的)摘要。
其他回答
如果您不关心保留因子,并希望将其应用到任何可以转换为数字的列,我使用下面的脚本。 如果df是您的原始数据框架,您可以使用下面的脚本。
df[] <- lapply(df, as.character)
df <- data.frame(lapply(df, function(x) ifelse(!is.na(as.numeric(x)), as.numeric(x), x)))
顺便说一句,我参考了谢恩和乔兰的解决方案
要将数据帧列转换为数字,你只需要做:-
因数转换为数字:-
data_frame$column <- as.numeric(as.character(data_frame$column))
在我的PC (R v.3.2.3)中,apply或sapply给出错误。Lapply效果很好。
dt[,2:4] <- lapply(dt[,2:4], function (x) as.factor(as.numeric(x)))
如果x是dataframe dat的列名,x的类型是factor,使用:
as.numeric(as.character(dat$x))
如果你遇到以下问题:
as.numeric(as.character(dat$x))
看看你的小数点。如果它们是“,”而不是“。”(如。"5,3")以上都不行。
一个潜在的解决方案是:
as.numeric(gsub(",", ".", dat$x))
我相信这在一些非英语国家是很常见的。
推荐文章
- 当我的ggplot2语法合理时,我如何处理R CMD检查“全局变量无可见绑定”注释?
- 如何解窝(爆炸)在一个熊猫数据帧列,成多行
- 如何将表转换为数据帧
- 转换data.frame列到向量?
- 在每个列表元素上调用int()函数?
- 如何将颜色分配给ggplot2中具有稳定映射的类别变量?
- 在基础图形的绘图区域之外绘制一个图例?
- 根据Pandas中的另一列提取列值
- 在ggplot2中的各个facet上注释文本
- 确定数据帧列的数据类型
- 删除重复的行
- NumPy或Pandas:保持数组类型为整数,同时具有NaN值
- 将行名转换为第一列
- 如何替换一个Pandas数据框架的字符串列中的文本?
- 从pandas apply()返回多个列