【问题标题】:Convert basket to single [duplicate]将篮子转换为单个[重复]
【发布时间】:2013-02-11 20:13:51
【问题描述】:

我目前有一个以篮子格式设置的表格,以便不规则数量的数据与表格的每一行相关联。如:

01,item1,item2,item3
02,item1,item2,
03,item1,item2,item3,item4
04,item1

但是,我需要将其更改为规范化的事务格式,每行只有一个项目。如:

01,item1
01,item2
01,item3
02,item1
02,item2
03,item1

...等等。有没有一种简单的自动化或程序化方式来做到这一点?数据当前位于 MySQL 数据库中,我可以将其导出为各种文件类型,并且我还可以访问 RStudio 和 Microsoft Excel 来尝试执行此操作。我可以为 RStudio 找到的所有事务资源都假设数据已经采用第二种格式,这就是我想要达到的。

【问题讨论】:

标签: mysql database r excel


【解决方案1】:

我假设我了解您的数据集在将其读入 R 后的外观,即,它将是一个矩形数据框,其中填充了 NA 以使行的长度相同。所以这应该可以解决问题:

#Create your dataset (this step is not for you)
row1 = c("01","item1","item2","item3",NA)
row2 = c("02","item1","item2",NA,NA)
row3 = c("03","item1","item2","item3","item4")
row4 = c("04","item1",NA,NA,NA)

Data = rbind(row1,row2,row3,row4)

#Now do the reconstruction (this step is for you)
col1 = NULL
col2 = NULL

for(i in 1:nrow(Data)){
    col1 = c(col1,rep(Data[i],ncol(Data)-1))
    col2 = c(col2,Data[i,-1])
}

NewData = cbind(col1,col2)[!is.na(col2),]

所以,你得到的是以下内容

> Data
     [,1] [,2]    [,3]    [,4]    [,5]   
row1 "01" "item1" "item2" "item3" NA     
row2 "02" "item1" "item2" NA      NA     
row3 "03" "item1" "item2" "item3" "item4"
row4 "04" "item1" NA      NA      NA     
> 
> NewData
      col1 col2   
 [1,] "01" "item1"
 [2,] "01" "item2"
 [3,] "01" "item3"
 [4,] "02" "item1"
 [5,] "02" "item2"
 [6,] "03" "item1"
 [7,] "03" "item2"
 [8,] "03" "item3"
 [9,] "03" "item4"
[10,] "04" "item1"

希望这会有所帮助。

【讨论】:

    【解决方案2】:

    这个问题与one 非常相似。正如@DWin 在他的评论中提到的,您需要将paste( . , . sep=",") 应用于拆分列表。

    xx <- read.table(text ='01,item1,item2,item3
    02,item1,item2,
    03,item1,item2,item3,item4
    04,item1')
    
    unlist(lapply(strsplit(as.character(xx$V1), ','), 
           function(x) paste(x[1],x[-1],sep=',')))
    
    [1] "01,item1" "01,item2" "01,item3" "02,item1" "02,item2" "03,item1" "03,item2" "03,item3" "03,item4" "04,item1"
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-10-17
      • 1970-01-01
      • 1970-01-01
      • 2015-01-12
      • 2019-12-01
      • 1970-01-01
      相关资源
      最近更新 更多