计算R中多个列中字符串的出现次数
我在R中有一个数据集,如下所示(仅显示相关列)。它有按性别分列的数据,说明受访者希望获得更多关于哪些作物的信息,以及这种作物对他们的优先程度计算R中多个列中字符串的出现次数,r,R,我在R中有一个数据集,如下所示(仅显示相关列)。它有按性别分列的数据,说明受访者希望获得更多关于哪些作物的信息,以及这种作物对他们的优先程度 sex wantcropinfo1 priority1 wantcropinfo2 priority2 m wheat high eggplant medium m rice low cabbage
sex wantcropinfo1 priority1 wantcropinfo2 priority2
m wheat high eggplant medium
m rice low cabbage high
m rice high
f eggplant medium
f cotton low
...
我希望能够(a)计算所有WantcropInfo
列中每个裁剪的总出现次数;(b)获得相同的计数,但按优先级排序;(c)做同样的事情,但按性别分类
(a) 输出应如下所示:
crop count
wheat 1
eggplant 2
rice 2
...
crop countm countf
wheat 1 0
eggplant 1 1
rice 2 0
...
crop high_m med_m low_m high_f med_f low_f
wheat 1 0 0 0 0 0
eggplant 0 1 0 0 1 0
rice 1 0 1 0 0 0
...
(b) 输出应如下所示:
crop count
wheat 1
eggplant 2
rice 2
...
crop countm countf
wheat 1 0
eggplant 1 1
rice 2 0
...
crop high_m med_m low_m high_f med_f low_f
wheat 1 0 0 0 0 0
eggplant 0 1 0 0 1 0
rice 1 0 1 0 0 0
...
(c) 应该是这样的:
crop count
wheat 1
eggplant 2
rice 2
...
crop countm countf
wheat 1 0
eggplant 1 1
rice 2 0
...
crop high_m med_m low_m high_f med_f low_f
wheat 1 0 0 0 0 0
eggplant 0 1 0 0 1 0
rice 1 0 1 0 0 0
...
我是个新手,手册有点让人困惑。我在谷歌上搜索了很多,但找不到任何与此类似的东西,尽管这似乎是一件很常见的事情。关于stackoverflow的类似问题似乎提出了一些不同的问题。在
plyr
包中使用ddply
函数
如何使用此功能的结构如下所示:
ddply(dataframe,.(var1,var2,...), summarize, function)
在这种情况下,您可能需要执行以下操作:
ddply(df,((wantcropinfo),summary,count=length(wantcropinfo))
ddply(df,(wantcropinfo,优先级),summary,count=length(wantcropinfo))
ddply(df,((wantcropinfo,优先级,性别),summary,count=length(wantcropinfo))
请注意,输出的结构与您在问题中提到的不同,但信息是相同的。对于上述结构,使用
表格
功能我们可以使用熔化
从数据。表格
从“宽”格式转换为“长”格式。它可以采用多个度量
列
library(data.table)
dM <- melt(setDT(df1), measure = patterns("^want", "priority"),
value.name = c("crop", "priority"))[crop!='']
每篇帖子问一个问题就好了。你知道关于数据表的好教程吗?@DiegoAgher你可以看看这些小插曲。这是一个好消息,谢谢!我将把它添加到这里,以备将来参考@akrun-非常感谢-这看起来很完美。。。但是当我这么做的时候(为了保持简单):
dM@akrun-好的,我明白了!它已将变量重命名为crop1:)不确定是否需要在您的答案中提及这一点,但我接受您的答案。再次感谢!谢谢你。然而,在(a)中,我想要两列wantcropinfo 1和wantcropinfo 2的总数,而不是我得到的wantcropinfo 1和wantcropinfo 2的所有不同组合的计数。