这是我的数据框
id ingredient1 ingredient2 ingredient3
1 apple milk cheese
5 pear apple
3 lettuces tomato salt
12 ribs tomato salt
20 cheese milk tomato
... ...
这里有200多条线
我知道如何通过表格获取频率。但是在这里,我真的不知道该怎么做。
这是我想要的理想输出:
var freq
apple 2
milk 2
cheese 2
pear 1
lettuces 1
tomato 3
salt 2
ribs 1
... ...
最佳答案
假设您需要所有“成分”列的总频率,我们通过删除第一列(df1[-1]
)对数据集进行子集设置,然后对其进行unlist
编码,以生成vector
,并使用table
获得唯一元素的频率。如果您需要data.frame
输出,我们可以用as.data.frame
包装它。
res <- as.data.frame(table(unlist(df1[-1])))
我在成分列中找到了一些空白元素
''
。如果要删除它,subset(res, Var1!='')
# Var1 Freq
#2 apple 2
#3 cheese 2
#4 lettuces 1
#5 milk 2
#6 pear 1
#7 ribs 1
#8 salt 2
#9 tomato 3