我需要创建一个数据框,其中包含前一个数据框中每个分类变量的频率.幸运的是,这些变量的 struct 都是数字,从1到5,而不是文本.

因此,我可以创建一个新的数据框,第一列包含数字1到5,接下来的每列都计算该数字的频率,作为原始数据框中每个变量的响应.

例如,我们将原始df定义为:

df1 <- data.frame(
             Z = c(4,   1,  2,  1,  5,  4,  2,  5,  1,  5),
             Y = c(5,   1,  5,  5,  2,  1,  4,  1,  3,  3),
             X = c(4,   2,  2,  1,  5,  1,  5,  1,  3,  2),
             W = c(2,   1,  4,  2,  3,  2,  4,  2,  1,  2),
             V = c(5,   1,  3,  3,  3,  3,  2,  4,  4,  1))

我需要第二个df,包含下表:

fq  Z   Y   X   W   V
1   3   3   3   2   2
2   4   2   6   10  2
3   0   6   3   3   12
4   8   4   4   8   8
5   15  15  10  0   5

我看到了一些关于如何使用plyr做类似事情的答案,但不是以系统的方式.有人能帮我吗?

推荐答案

我们可以使用

sapply(df1, function(x) tapply(x, factor(x, levels = 1:5),  FUN = sum))
   Z  Y  X  W  V
1  3  3  3  2  2
2  4  2  6 10  2
3 NA  6  3  3 12
4  8  4  4  8  8
5 15 15 10 NA  5

R相关问答推荐

在R中列表的结尾添加数字载体

r替换lme S4对象的字符串的一部分

整数成随机顺序与约束R?

ggplot的轴标签保存在officer中时被剪切

为什么在ggplot2中添加geom_text这么慢?

如何在格子中添加双曲曲线

将数据集中的值增加到当前包含的最大值

如何直接从R中的风险分数计算c指数?

删除具有相同标题的tabPanel(shinly)

当我们有多个特殊字符时,使用gsub删除名称和代码'

移除仪表板Quarto中顶盖和车身之间的白色区域

R函数,用于生成伪随机二进制序列,其中同一数字在一行中不出现超过两次

打印XTS对象

绘制采样开始和采样结束之间的事件

如何将SAS数据集的列名和列标签同时包含在r中GT表的表首?

创建列并对大型数据集中的特定条件进行成对比较的更高效程序

在R中的数据框上使用Apply()函数时,如何保留非数字列?

使用列中的值来调用函数调用中应使用的其他列

整理曲线图、曲线图和点图

创建两个变量组合的索引矩阵