在R中的空间分隔数据集中读取频繁项

时间:2019-03-05 14:29:56

标签: r file-io

我有一个.txt文件,其中包含用空格分隔的数字。每行中都有不同数量的数字。我需要对数据进行市场篮子分析,但是我似乎无法正确加载数据(尤其是因为每个“篮子”中有不同数量的物品)。什么是存储数据的最佳方法,以便我可以找到经常使用的物品,然后检查每个购物篮中的经常使用的物品?

数据示例:

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

2 个答案:

答案 0 :(得分:0)

您应该能够使用readLines输入,然后使用lapply分隔为数字。假设在名为txt.txt的文件中:

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

我不建议使用fill = TRUE来建议使用read.table的原因(这会给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 

答案 1 :(得分:0)

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