如何存储Wine描述符数据 数据

问题描述

比方说,我有一个非常庞大的数据集,其中包含来自品酒的结果,品酒描述符存储在其中一个变量中。

data.frame(c("red","white","rose"),c("grapefruit,raspBerry","sweet,bold","tannins,long finish"))

可能的描述符数量很多。我想以某种方式打开它们的包装,使其可用于机器学习技术的分析。我应该将每个可能的描述符放在其自己的变量中,还是有一种更有效,更紧凑的方式来存储此类数据?

提前谢谢!

解决方法

尝试这种方法。您有两个变量,但其中一个用逗号分隔。您可以重塑数据并为每个功能构建一个变量。此外,这还取决于您要应用哪一类ML算法(也许是无监督学习)。这里的代码:

library(tidyverse)
#Code
dfnew <- df %>% setNames(.,c('v1','v2')) %>%
  mutate(id=row_number()) %>%
  pivot_longer(-id) %>%
  separate_rows(value,sep=',') %>%
  mutate(value=trimws(value)) %>% select(-name) %>%
  group_by(id) %>% mutate(Var=paste0('V',row_number())) %>%
  pivot_wider(names_from = Var,values_from=value) %>%
  ungroup() %>%select(-id)

输出:

# A tibble: 3 x 3
  V1    V2         V3         
  <chr> <chr>      <chr>      
1 red   grapefruit raspberry  
2 white sweet      bold       
3 rose  tannins    long finish

使用了一些数据:

#Data
df <- data.frame(c("red","white","rose"),c("grapefruit,raspberry","sweet,bold","tannins,long finish"))
,

我们可以使用base R轻松地做到这一点(不需要任何软件包)。只需重命名数据集的列(由于data.frame构造没有任何名称,它也仅以第一行作为列名),然后使用read.csv读取第二列,然后它将自动将定界符用作,以分隔成不同的列

names(df) <- paste0('v',seq_along(df))
df[c('v2','v3')] <- read.csv(text = df$v2,header = FALSE)

-输出

df
#     v1         v2           v3
#1   red grapefruit    raspberry
#2 white      sweet         bold
#3  rose    tannins  long finish

数据

df <- structure(list(c..red....white....rose.. = c("red",c..grapefruit..raspberry....sweet..bold....tannins..long.finish.. = c("grapefruit,long finish")),class = "data.frame",row.names = c(NA,-3L))