多列代表一个值时的频率表 (R)

2024-03-08

我有一个这样的数据集:

ID    color1   color2  color3   shape1       shape2        size
55    red     blue     NA       circle       triangle      small
67    yellow  NA       NA       triangle     NA            medium
83    blue    yellow   NA       circle       NA            large
78    red     yellow   blue     square       circle        large
43    green   NA       NA       square       circle        small
29    yellow  green    NA       circle       triangle      medium

我想创建一个数据框,其中包含每个变量的频率和百分比,但我遇到了麻烦,因为在某些情况下同一变量有多个列。


Variable      Level        Freq        Percent 
 
color         blue          3           27.27
              red           2           18.18
              yellow        4           36.36
              green         2           18.18
              total         11          100.00

shape         circle        5           50.0       
              triangle      3           30.0
              square        2           20.0
              total         10          100.0

size          small         2           33.3
              medium        2           33.3
              large         2           33.3
              total         6           100.0

我相信我需要将这些变量转换为 long,然后使用 summarize/mutate 来获取频率,但我似乎无法弄清楚。任何帮助是极大的赞赏。


您可以使用tidyverse包将数据转换为长格式,然后总结所需的统计数据。

library(tidyverse)

df |> 
  # Transform all columns into a long format
  pivot_longer(cols = -ID,
               names_pattern = "([A-z]+)",
               names_to = c("variable")) |>
  # Drop NA entries
  drop_na(value) |>
  # Group by variable
  group_by(variable) |>
  # Count
  count(value) |>
  # Calculate percentage as n / sum of n by variable
  mutate(perc = 100* n / sum(n))

# A tibble: 10 x 4
# Groups:   variable [3]
#   variable value        n  perc
#   <chr>    <chr>    <int> <dbl>
# 1 color    blue         3  27.3
# 2 color    green        2  18.2
# 3 color    red          2  18.2
# 4 color    yellow       4  36.4
# 5 shape    circle       5  50  
# 6 shape    square       2  20  
# 7 shape    triangle     3  30  
# 8 size     large        2  33.3
# 9 size     medium       2  33.3
#10 size     small        2  33.3
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

多列代表一个值时的频率表 (R) 的相关文章

随机推荐

  • http 错误 403.14-禁止

    我成功地将我的测试 html 页面托管在iis8 当我尝试托管已经创建的网站时 我得到了http错误 403 14 禁止 即使我将默认文档设置为具有框架的起始 html 页面 该网站有几个文件夹内部文件夹 当我启用目录浏览时 它将列出该页面
  • Process.start() 启动的进程返回错误的进程 ID?

    我正在使用以下代码启动可执行文件 Process proc new Process proc StartInfo FileName executablePath proc Start proc WaitForInputIdle 在这次通话之
  • 使用 Process、RegistryKey 将 .NET Framework 代码移植到 .NET Standard

    我有一个来自现有 NET Framework 项目的方法 该方法从注册表获取 Windows 中默认浏览器的路径 并使用Process call string browser RegistryKey regKey null try regK
  • 请参阅调试目的的 Firebase 网络流量

    我希望能够使用 Charles Proxy 调试 firebase 分析 我无权访问源代码 因此无法在 Firebase 中启用调试视图 我想要跟踪网络流量 以便能够使用 Firebase Analytics 数据的 Charles 代理查
  • 从 LINQ to SQL 生成的 T-SQL 缺少 where 子句

    我有一个名为 CodeLookupAccessDataContext 的 DataContext 对象 它是通过 Visual Studio LINQ to SQL 类向导生成的 我扩展了该对象的功能 使其公开一些方法来返回 LINQ to
  • 如何将 javascript 代码注入到每个原型方法的开头?

    我想在 javascript 中注入代码 用于调试目的 在每个人我的 JavaScript 方法原型 这个例子只显示了一个类 但是假设我有数百个类 每个类有几十个方法 该机制应该在原型级别执行 而不需要指定每个类 方法名称 function
  • 何时“让它崩溃”以及何时捍卫 Erlang 中的代码?

    因此 带着 让它崩溃 的口号 Erlang 代码意味着能够抵御残酷的世界事件 例如意外拔出插头 硬件故障和不稳定的网络连接 另一方面 有防御性编程 https en wikipedia org wiki Defensive programm
  • Coq QArith 除以零就是零,为什么?

    我注意到在 Coq 的有理数定义中 零的倒数被定义为零 通常 除以零是没有明确定义 合法 允许的 Require Import QArith Lemma inv zero is zero 0 0 Proof unfold Qeq refle
  • 启动时不继承父文件描述符

    我需要使用 start 命令在 winXP 上启动一些进程 听起来很简单 但是有没有办法让启动的进程不会继承父进程的任何端口 我在我的程序中使用以下方法启动孩子 system start x params 现在 当父进程被杀死时 我无法再次
  • 二叉搜索树的广度优先遍历 C++

    也许是快速 简单的问题 我已经实现了一个二叉树 然后我希望将二叉搜索树转换为数组 或者至少像在数组中一样打印出来 我遇到的问题是如何获取 0 中的 NULL 标志 例如 假设我有一棵树 如下所示 10 6 12 1 8 15 4 我希望它按
  • 如何在 Cakephp 中发出 https post 请求

    我有一个要求 应用程序必须通过 HTTPS POST 进行 REST API 调用 我是 cakephp 的新手 我在想是否可以使用 httpsocket 进行 https 调用 我很感激任何帮助 Thanks 您可以使用其中任何一个 CA
  • MacPorts gcc48 无法识别命令行选项“-stdlib=libc++”

    Context 我正在尝试编译包 root numpy 它是科学分析软件 root 和python包 numpy 之间的链接 它用作根包装器 rootpy 的一部分 执行以下行时出现 g 错误 g bundle undefined dyna
  • EF AddOrUpdate 种子不更新子实体

    我在播种数据时遇到一些问题 我能够使用一个非常小的应用程序重现该问题 鉴于您有这种种子方法 protected override void Seed JunkContext context context Junks AddOrUpdate
  • GCM 响应中的multicast_id 是什么?

    示例场景 我正在使用 GCM 向多个设备发送消息 响应包含 multicast id 我该如何使用这个值 Thanks 它只是一个标识符 多播ID标识多播消息的唯一 ID 编号 该 ID 没有用处 除非您希望将其作为 Google 的 收据
  • npm运行服务报错

    我在运行命令时遇到问题 npm 运行服务 要修复它 我需要注销或重新启动我的 Ubuntu 16 04 我检查了正在运行的任务 节点没有运行 我还卸载了node和npm并再次使用NVM安装 但我仍然有问题 NPM错误日志 gt email
  • SSIS 包中的步骤如何检查时间?

    我的控制流中的起始项目需要是检查时间并设置变量的项目 控制流项中是否有一个项可以做到这一点 访问您的系统变量 System StartTime 将是包开始执行的时间 如果开始执行和需要评估当前时间的元素之间有很长的时间 您可以查看 Cont
  • SQL Server - 向所有表添加默认约束

    有没有办法编写一个脚本来检查数据库中的每个表 寻找uniqueidentifier列名为ID 然后添加一个DEFAULT的约束NEWID 到列 如果DEFAULT约束不存在 根据OP的评论澄清进行编辑 该脚本创建一个DEFAULT的约束NE
  • 解决方案范围内的预构建活动?

    我在 Visual Studio 中有一个解决方案 其中包含多个项目 我想在每次构建的一开始就运行一个命令 无论涉及哪些项目以及它们是否是最新的 本质上 我需要类似于解决方案范围内的预构建事件的东西 但不幸的是 VS 似乎不支持这些 有谁知
  • Haskell:解析命令行参数

    这更多的是一个风格问题 而不是一个如何做的问题 所以我有一个需要两个命令行参数的程序 一个字符串和一个整数 我是这样实现的 main do args aString aInteger lt getArgs let parsed n read
  • 多列代表一个值时的频率表 (R)

    我有一个这样的数据集 ID color1 color2 color3 shape1 shape2 size 55 red blue NA circle triangle small 67 yellow NA NA triangle NA m