Как найти соотношение между столбцом фактора и числовым столбцом? - PullRequest
1 голос
/ 12 апреля 2019

У меня есть столбец фактора и числовой столбец, из которого мне нужно найти соотношение между ними, а затем отформатировать его, чтобы новая переменная имела два десятичных знака.

Я пытался использовать как.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 для форматирования факторной переменной, но с тем же результатом.

1 Ответ

1 голос
/ 12 апреля 2019

@ 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"
...