我有一个由三个表组成的数据库,像这样:
我想使用这个数据库在R中建立一个机器学习模型,所需的数据如下:
我可以使用独热编码将t_pengolahan表中的分类变量(如“彭古帕桑,费尔门塔西,等等”)转换为属性。但是,如何根据上面的“结果(使用SQL查询)”数据为数据值设置标志(是或否)呢?
回答:
我们可以结合两个之前相关问题的答案,每个答案都提供了解决方案的一半;这些答案可以在这里和这里找到:
library(dplyr) ## dplyr和tidyr用于数据处理library(tidyr)options(dplyr.width = Inf) ## 我们希望显示结果的所有列yes_fun <- function(x) { ## 帮助下面的pivot_wider() if ( length(x) > 0 ) { return("yes") }}sql_result %>% separate_rows(pengolahan) %>% ## 为pengolahan中的唯一词添加行 pivot_wider(names_from = pengolahan, ## 扩展为是/否指示器 values_from = pengolahan, values_fill = list(pengolahan = "no"), values_fn = list(pengolahan = yes_fun))
数据
id_pangan <- 1:3kategori <- c("Daging", "Buah", "Susu")pengolahan <- c("Penggilingan, Perebusan", "Pengupasan", "Fermentasi, Sterilisasi")batas <- c(100, 50, 200)sql_result <- data.frame(id_pangan, kategori, pengolahan, batas)# A tibble: 3 x 8 id_pangan kategori batas Penggilingan Perebusan Pengupasan <int> <fct> <dbl> <chr> <chr> <chr> 1 1 Daging 100 yes yes no 2 2 Buah 50 no no yes 3 3 Susu 200 no no no Fermentasi Sterilisasi <chr> <chr> 1 no no 2 no no 3 yes yes