使用 r 从 url 导入 table - 但数字列是字符
Import table from url with r - but numeric columns are characters
我有以下代码:
url <- "https://lebensmittel-naehrstoffe.de/calciumhaltige-lebensmittel/"
page <- read_html(url) #Creates an html document from URL
Ca <- html_table(page, fill = TRUE, dec = ",") #Parses tables into data frames
Ca <- data.frame(Ca)
但是我的 data.frame Ca[4] 的最后一列包含包含“.”的值。和“,” - 因此它是德语 talbe dec 是“,”,但在 R 中它始终是一个字符。我已经尝试过使用 gsub 和 as.numeric,但总是失败。请注意:我已经输入了 dec=","
有人可以帮助我吗?如果可能的话,它应该是 运行 它在很多 data.frame 上的解决方案(或 html 导入或其他任何东西),因为我有很多这样的表...
非常感谢!
您可以使用 readr::parse_number
:
Ca <- html_table(page, fill = TRUE, dec = ",")[[1]]
Ca$`Calciumgehalt in mg` <- readr::parse_number(Ca$`Calciumgehalt in mg`, locale = locale(decimal_mark = ",", grouping_mark = "."))
str(Ca)
# 'data.frame': 82 obs. of 4 variables:
# $ Lebensmittel : chr "Basilikum, getrocknet" "Majoran, getrocknet" "Thymian, getrocknet" "Selleriesamen" ...
# $ Kategorie : chr "Gewürze" "Gewürze" "Gewürze" "Gewürze" ...
# $ Mengenangabe : chr "je 100 Gramm" "je 100 Gramm" "je 100 Gramm" "je 100 Gramm" ...
# $ Calciumgehalt.in.mg: num 2240 1990 1890 1767 1597 ...
我有以下代码:
url <- "https://lebensmittel-naehrstoffe.de/calciumhaltige-lebensmittel/"
page <- read_html(url) #Creates an html document from URL
Ca <- html_table(page, fill = TRUE, dec = ",") #Parses tables into data frames
Ca <- data.frame(Ca)
但是我的 data.frame Ca[4] 的最后一列包含包含“.”的值。和“,” - 因此它是德语 talbe dec 是“,”,但在 R 中它始终是一个字符。我已经尝试过使用 gsub 和 as.numeric,但总是失败。请注意:我已经输入了 dec=","
有人可以帮助我吗?如果可能的话,它应该是 运行 它在很多 data.frame 上的解决方案(或 html 导入或其他任何东西),因为我有很多这样的表...
非常感谢!
您可以使用 readr::parse_number
:
Ca <- html_table(page, fill = TRUE, dec = ",")[[1]]
Ca$`Calciumgehalt in mg` <- readr::parse_number(Ca$`Calciumgehalt in mg`, locale = locale(decimal_mark = ",", grouping_mark = "."))
str(Ca)
# 'data.frame': 82 obs. of 4 variables:
# $ Lebensmittel : chr "Basilikum, getrocknet" "Majoran, getrocknet" "Thymian, getrocknet" "Selleriesamen" ...
# $ Kategorie : chr "Gewürze" "Gewürze" "Gewürze" "Gewürze" ...
# $ Mengenangabe : chr "je 100 Gramm" "je 100 Gramm" "je 100 Gramm" "je 100 Gramm" ...
# $ Calciumgehalt.in.mg: num 2240 1990 1890 1767 1597 ...