在 R 中读取 space 个分离的数据集以获取频繁项

Reading in space seperated dataset in R for frequent items

我有一个 .txt 文件,其中包含以空格分隔的数字。每行都有不同数量的数字。我需要对数据进行购物篮分析,但是我似乎无法正确加载数据(特别是因为每个 'basket' 中的项目数量不同)。存储数据的最佳方式是什么,以便我可以找到频繁的项目,然后检查每个购物篮中的频繁项目?

数据示例:

1 2 4 3 67 43 154
4 5 3 21 2
2 4 5 32 145
2 6 7 8 23 456 32 21 34 54

你应该可以用readLines输入,然后用lapply分隔成数字。假设在名为 txt.txt:

的文件中
   dat <- lapply( readLines("txt.txt"), function(Line) scan(text=Line) )

我没有建议 read.table 使用 fill=TRUE 的原因(这会给 yiu 一些类似于已经出现的其他答案的东西,因为不需要列结构。除非有编码的信息这些数字的位置。我想知道这是否可能是在各个行中编码的附加信息,例如区域或商店或某些其他实体作为特定编号项目的来源。这将是将其保留在列表结构中的原因计数不均匀。您只需使用 table:

即可获得全局枚举
table( unlist(dat) )

  1   2   3   4   5   6   7   8  21  23  32  34  43  54  67 145 154 456 
  1   4   2   3   2   1   1   1   2   1   2   1   1   1   1   1   1   1 
my_text = '1 2 4 3 67 43 154
                    4 5 3 21 2
                    2 4 5 32 145
                    2 6 7 8 23 456 32 21 34 54'



my_text2 <- strsplit(my_text, split = '\n') 

my_text2 <- lapply(my_text2, trimws)



my_text2           %>%  
do.call('rbind',.) %>%
t                  %>%  
as.data.frame()    %>% 
separate(V1, sep  = ' ',into = paste('col_', 1:10))

col_ 1 col_ 2 col_ 3 col_ 4 col_ 5 col_ 6 col_ 7 col_ 8 col_ 9 col_ 10
1      1      2      4      3     67     43    154   <NA>   <NA>    <NA>
2      4      5      3     21      2   <NA>   <NA>   <NA>   <NA>    <NA>
3      2      4      5     32    145   <NA>   <NA>   <NA>   <NA>    <NA>
4      2      6      7      8     23    456     32     21     34      54