【发布时间】:2018-09-24 07:45:43
【问题描述】:
我想要做的是将存储为 CSV 文件的交易列表编辑为 R 中的“arules”包可以使用的东西。但我也想将其保留为数据框,以便我可以导出它到不同的 CSV 文件。所以我从一个简单的数据集开始:
Fruit Milk Eggs
yes yes no
no no yes
no yes yes
yes yes yes
它需要看起来像这样:
Fruit Milk
Eggs
Milk Eggs
Fruit Milk Eggs
所以,我读入 CSV 并获取列名:
df1 <- read.csv('basket_test.csv')
l <- c()
#create list with item names
for(i in 1:3){
print(i)
l <- append(l,names(df1)[i])
i=i+1
}
这是我遇到问题的地方,R 看到分类数据,当我尝试更改它时它会抱怨:
#replace "yes" with item name
for(x in 1:3){
for(y in 1:4){
if(df1[y,x]=="yes"){
df1[y,x] <- l[x]
}
}
}
它给了我这个错误:
无效因子水平,NA产生无效因子水平,NA产生无效因子水平,NA产生无效因子水平,NA产生无效因子水平,NA产生无效因子水平,NA产生无效因子水平,NA产生无效因子水平,NA产生
数据框现在看起来像这样:
Fruit Milk Eggs
1 <NA> <NA> no
2 no no <NA>
3 no <NA> <NA>
4 <NA> <NA> <NA>
我在数据框单元格上尝试了as.character,方法是遍历每个单元格,然后再次尝试该例程,但这不起作用。那么,我应该如何处理我的数据框以更改其中的值?
谢谢
编辑我确实找到了这个:
df_fact <- data.frame(lapply(df1,as.factor))
df_trans <- as(df_fact, 'transactions')
来自这里的帖子:R-convert transaction format dataset to basket format for Market Basket Analysis
但我正在尝试自己做,这种方法不会产生我可以存储为 CSV 的东西。
【问题讨论】:
标签: r dataframe market-basket-analysis