我有一个因子列和一个数字列,我需要找到它们之间的比率,然后对其进行格式化,以便新变量具有两个小数位。
我尝试使用as.numeric(as.character())转换因子变量,然后将二者相除以找到比率,但结果是NA的向量。另外,我需要使用基本r代码。
x=as.numeric(as.character(TotalElectric)) / Power_from_renew
format(x, digits=2)
TotalElectric Power_from_renew
1 833 1313.400
2 4,525 8135.400
3 75,200 673.000
4 5,512 7391.300
5 105 2952.000
6 147,000 32523.800
7 7,763 2596.700
8 980 2743.400
9 259,400 37448.000
10 70,100 53853.000
11 24,300 2191.900
12 2,190 2948.400
13 13,086 2847.000
14 74,700 1183.100
15 1,002 2867.100
使用上面的代码时,我的结果是
Power_from_renew
1 NA
2 NA
3 NA
4 NA
5 NA
6 NA
我还尝试使用gsub格式化因子变量,但结果相同。
答案 0 :(得分:1)
@ r2evans解决方案可以完美地工作。您可能做错了事。
# > tst
# TotalElectric Power_from_renew
# 1 833 1313.4
# 2 4,525 8135.4
# 3 75,200 673.0
# 4 5,512 7391.3
# 5 105 2952.0
# 6 147,000 32523.8
# 7 7,763 2596.7
# 8 980 2743.4
# 9 259,400 37448.0
# 10 70,100 53853.0
# 11 24,300 2191.9
# 12 2,190 2948.4
# 13 13,086 2847.0
# 14 74,700 1183.1
# 15 1,002 2867.1
tst <- as.data.frame(tst)
class(tst$TotalElectric)
# [1] "factor"
class(tst$Power_from_renew)
# [1] "numeric"
x=as.numeric(as.numeric(gsub(",","",tst$TotalElectric))) / tst$Power_from_renew
format(x, digits=2)
# [1] " 0.634" " 0.556" "111.738" " 0.746" " 0.036" " 4.520" " 2.990" " 0.357" " 6.927" " 1.302" " 11.086" " 0.743" " 4.596"
# [14] " 63.139" " 0.349"