>str(data$Installs)
$ Установки: Фактор с 21 уровнем "","0+","1+","1,000+",..: 8 20 15 18 11 17 17 5 5 8 ...
db$Installs = as.character(gsub("\\+", "", db$Installs))
str(db$Installs)
chr [1:10841] "10,000" "500,000" "5,000,000" "50,000,000" "100,000" "50,000" "50,000" "1,000,000" "1,000,000" "10,000" ...
db$Installs = as.double(gsub(",","",db$Installs))
str(db$Installs)
num [1:10841] 1e+04 5e+05 5e+06 5e+07 1e+05 5e+04 5e+04 1e+06 1e+06 1e+04 ...
Мне нужны такие переменные:
"10000" "500000" "5000000" "50000000" "100000" "50000" "50000" "1000000" "1000000" "10000" ...
db$Installs.factor <- factor(db$Installs)
db$Installs = as.character(gsub("\\+", "", db$Installs))
db$Installs = as.double(gsub(",","",db$Installs))
По-прежнему показывает тот же > str(db$Installs)
chr [1:10841] "10,000" "500,000" "5,000,000" "50,000,000" "100,000" "50,000" "50,000" "1,000,000" "1,000,000" "10,000" ... > db$Installs = as.numeric(gsub(",", "",db$Installs,fixed=TRUE))
num 1: 10841] 1e+04 5e+05 5e+06 5e+07 1e+05 5e+04 5e+04 1e+06 1e+06 1e+04 ... Мне нужны такие переменные: "10000" "500000" "5000000" "50000000" "100000" "50000" "50000" "1000000" "1000000" "10000" ...
предоставить некоторые образцы данных
Для этого c <- c("10,000", "500,000" ,"5,000,000", "50,000,000" ,"100,000" ,"50,000" ,"50,000", "1,000,000" ,"1,000,000", "10,000")
работает вышеуказанное решение.
И вы получаете правильный результат (согласно вашему результату str
) 1e+04
это 10000
Нет, это ваше решение as.numeric(gsub(",", "",db$Installs,fixed=TRUE))
дает мне такой же вывод, как этот ` 1e+04 5e+05 5e+06 5e+07 1e+05 5e+04 5e+04 1e+06 1e+06 1e+04...`
Мне нужны такие переменные: "10000" "500000" "5000000" "50000000" "100000" "50000" "50000" "1000000" "1000000" "10000" ...
Попробуйте это - as.numeric(gsub("\\D", "", db$Intsalls))
проверьте ниже пример
Попробуй это
Вход-
sample <- c("10,000+" ,"500,000+", "5,000,000+", "50,000,000+" ,"100,000+", "50,000+" ,"50,000+" ,"1,000,000+" )
Решение-
sample <- as.numeric(gsub("\\D", "", sample))
Выход-
1] 10000 500000 5000000 50000000 100000 50000 50000 1000000
Примечание- Если вы хотите заставить R не использовать экспоненциальную запись, вы можете использовать -
options("scipen"=100, "digits"=4)
«наука»: целое число. Штраф, применяемый при принятии решения о печати числовых значений в фиксированной или экспоненциальной записи. Положительные значения смещаются в сторону фиксированной, а отрицательные — в сторону научной записи: фиксированная запись будет предпочтительнее, если только она не шире «научных» цифр.
ОП может по-прежнему находить вещи, напечатанные в научной нотации, что является отдельной проблемой, для которой они могут захотеть посмотреть здесь.
> db <- read.csv("googleplaystore.csv")
> str(db$Installs)
Фактор с 21 уровнем "","0+","1+","1000+",..: 8 20 15 18 11 17 17 5 5 8 ... > db$Installs = as.numeric(gsub("\\D", "", db$Installs))
> str(db$Installs)
число [1:10841] 1e +04 5e+05 5e+06 5e+07 1e+05 5e+04 5e+04 1e+06 1e+06 1e+04 ...
Он преобразуется в числовое с использованием приведенного выше решения, теперь вам нужно заставить r избегать экспоненциальной записи, используя ссылку, предоставленную @joran, или используя options("scipen"=100, "digits"=4)
да! Готово Спасибо.....options("scipen"=100, "digits"=4)
Сработало.
Попробуйте
as.numeric(gsub(",", "",db$Installs,fixed=TRUE))
, а неdouble