在 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
我有一个 .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