这是我的数据框

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

10-05 23:35