Как заменить запятые в нечисловом списке в R? - PullRequest
0 голосов
/ 07 мая 2020

У меня есть data.frame в R, это тоже список. Я хочу заменить "," на "." в цифрах. Data.frame не является числовым, но я думаю, что он должен иметь возможность изменять десятичный разделитель.

Я много пробовал, но ничего не работает. Я не хочу переупорядочивать или манипулировать своим data.frame. Все, что я хочу, это избавиться от "," в десятичных числах.

df <- data.frame(colnames(c("a","b","c")),"row1"=c("2,3","6"),"row2"=c("56,0","56,8"),"row3"=c("1",0"))

#trials to make df numeric and change from , to .

as.numeric(str_replace_all(df,",","."))
as.numeric(unlist(df[ ,2:3]))
lapply(df, as.numeric)
as.numeric(gsub(pattern = ",",replacement = ".",df[ ,2:3]))
as.numeric(df$a)

Что еще я могу сделать с этой неприятной проблемой?

Ответы [ 2 ]

0 голосов
/ 07 мая 2020

Мы также можем использовать mutate_all

library(dplyr)
library(stringr)
df %>%
    mutate_all(~ as.numeric(str_replace(., ",", ".")))
0 голосов
/ 07 мая 2020

Я думаю, вы неправильно читаете данные (вы можете указать dec = ",") при чтении данных).

Вы можете использовать gsub, чтобы заменить запятые (,) точкой (.) и превратить их в числа c.

df[] <- lapply(df, function(x) as.numeric(gsub(',', '.', x)))
...