tidyr::收集不同类型的多个列

2023-12-01

我的问题类似于这个问题。我试图tidyr::gather多列。但是,链接中提供的解决方案不太理想,因为所有列的属性通常不相同,因此它们被删除。

请注意,我知道如何使用基本 R 执行此操作,但我正在尝试学习如何使用 tidyr 和/或 dplyr 执行等效操作。

下面我模拟了一些数据(效果不佳,但速度很快),这些数据说明了我经常遇到的情况(尽管我通常有更多的专栏遵循这种相同的模式)。我已经提供了基本解决方案stats::reshape这样你就可以看到我想要的输出。

任何帮助将非常感激。

set.seed(123)
male_g6 <- rbinom(100, 1, .5)
ell_g6 <- rbinom(100, 1, .1)
sped_g6 <- rbinom(100, 1, .15)
pullouts_g6 <- rbinom(100, 5, .1)
disability_g6 <- replicate(100, 
                sample(
                    c("asd", "cd", "ed", "hi", "id", "ohi", "ld", "none"),
                    1,
                    prob = c(rep(0.01, 6), 0.05, 0.89)
                    )
                 )
score_g6 <- rnorm(100, 200, 10)
score_g7 <- score_g6 + 5 + rnorm(100, 0, 2)
score_g8 <- score_g7 + 5 + rnorm(100, 0, 2)

d <- data.frame(
        SID = 1:100,
        male_g6 = male_g6,
        male_g7 = male_g6,
        male_g8 = male_g6,
        ell_g6 = ell_g6,
        ell_g7 = ell_g6,
        ell_g8 = ell_g6,
        sped_g6 = sped_g6,
        sped_g7 = sped_g6,
        sped_g8 = sped_g6,
        pullouts_g6 = pullouts_g6,
        pullouts_g7 = pullouts_g6,
        pullouts_g8 = pullouts_g6,
        disability_g6 = disability_g6,
        disability_g7 = disability_g6,
        disability_g8 = disability_g6,
        score_g6 = score_g6,
        score_g7 = score_g7,
        score_g8 = score_g8
    )

随着基础重塑

ld <- stats::reshape(d,
        idvar = "SID",
        varying = list(
            c("male_g6", "male_g7", "male_g8"),
            c("ell_g6", "ell_g7", "ell_g8"),
            c("sped_g6", "sped_g7", "sped_g8"),
            c("pullouts_g6", "pullouts_g7", "pullouts_g8"),
            c("disability_g6", "disability_g7", "disability_g8"),
            c("score_g6", "score_g7", "score_g8")
            ),
        v.names = c("male", "ell", "sped", "pullouts", "disability", "score"),
        times = 6:8,
        timevar = "Grade",
        direction = "long"
    )
ld <- ld[order(ld$SID), ]

您需要收集超出您想要结束的内容,以便您可以将年级水平与标题分开,然后您可以展开回宽格式:

ld2 <- d %>% gather(var, val, -SID) %>%     # gather to long form
    # separate grade from variable names
    separate(var, c('var', 'grade'), sep = '_g', convert = TRUE) %>% 
    spread(var, val, convert = TRUE)    # spread back to wide

head(ld2)

##   SID grade disability ell male pullouts    score sped
## 1   1     6         cd   0    0        1 196.2440    0
## 2   1     7         cd   0    0        1 203.2739    0
## 3   1     8         cd   0    0        1 211.1347    0
## 4   2     6       none   0    1        0 194.3812    1
## 5   2     7       none   0    1        0 195.3957    1
## 6   2     8       none   0    1        0 202.4890    1
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

tidyr::收集不同类型的多个列 的相关文章

  • 可以明确声明包依赖项的版本吗?

    我倾向于对我编写的代码进行明确而不是隐含的描述 因此 在成功创建自己的包之后 我立即想到的下一件事是如何最好地确保代码的健壮性和可靠性 其中一部分与我的包所依赖的包有关 实际问题 在这方面 是否可以明确声明需要 期望哪个版本的包依赖项 我正
  • R read_excel:libxls 错误:无法解析文件

    我试图使用 readxl read excel 将 xls 文件读入 R 但它给出了以下错误 Error filepath data xls libxls error Unable to parse file 还尝试了 readxl exc
  • 使用 ggplot2 修改点子集的形状

    我正在尝试绘制一个沿大量维度变化的大型散点图 这是我的起始情节 p lt ggplot mtcars aes wt mpg shape cyl colour gear size carb geom point 使用mtcars数据集 我只是
  • dplyr 中的 Summarize 是否可以不删除数据框中的其他列?

    我有一个包含三列的数据框 我正在尝试进行简单的总结以查找数据框中每个城市的最高温度 但同时保留每个最高温度列出的日期 这是数据框 我们称之为 maxT new ID Date Max TemperatureF 1 TUS 1960 04 0
  • 使用 dplyr:group_by 将数据帧分成多个子集?

    有没有办法根据 group by 组使用 dplyr 将一个数据帧拆分为数据帧的子集 mtcars gt group by cyl gear gt codes 非常感谢 好吧 并不是你真的想要 但你可以这样做tidyr 即nearly一样的
  • 如何在 R 中为传单中的数值变量设置不对称颜色渐变

    我想让传单调色板以零为中心 红白绿发散 我已经尝试过中所说的这个帖子 https stackoverflow com questions 29262824 r center color palette on 0 当我尝试手动创建颜色时 我得
  • 限制数据框中所有单元格的字符串长度?

    您好 有没有一种方法可以限制 data frame 中所有列的字符串文本大小 而不必循环遍历每一列并一次使用 str trunc 之类的东西 例如下面的数据框 我可以将所有文本大小限制为仅 5 个字符 而不必一次只执行一列吗 如果有 50
  • R:将 readRDS 应用于 .Rds 文件名的列表对象

    我有几个包含数据帧对象的 Rds 文件 我想对每个文件应用一个函数并将数据帧绑定到单个数据帧中 但是 当我尝试从文件名列表中读取多个 Rds 文件时 我收到错误 FUN X i 中的错误 从连接读取时出错 readRDS 不适用于列表吗 R
  • 将 sf voronoi 多边形裁剪到边界框时出错

    我正在尝试将 voronoi polygons 使用 sf package 创建 剪辑 到边界框 但它引发了我无法定义的错误 我对 R 的空间世界不太有经验 感谢所有帮助 样本数据 stations lt structure list ST
  • R 更改小数位且不四舍五入

    gt signif 1 89 digits 2 1 1 9 我想要1 8 这有点笨拙 但它会起作用并保持所有数字 x lt 1 829380 trunc dec lt function x n floor x 10 n 10 n Resul
  • 将数据从 R 导出到 Excel

    我试图将从 R 获得的一些结果导出到 Excel 中 但未成功 我尝试过以下代码 write table ALBERTA1 D ALBERTA1 txt sep t write csv ALBERTA1 ALBERTA1 csv your
  • fread 将空导入为 NA

    我正在尝试导入带有空白的 csv 读取为 不幸的是他们都读作 NA now 为了更好地演示问题 我还展示了如何NA NA and 都映射到同一事物 除了最底部的示例 这将妨碍简单的解决方法dt is na dt lt gt write cs
  • 为绘图制作 2D 图例 - 双变量分区统计图

    我一直在玩双变量 choropleth 地图 并且一直在如何创建类似于 2d 图例的问题上陷入困境约书亚 史蒂文斯 http www joshuastevens net cartography make a bivariate chorop
  • 如何将此“for”循环转换为向量解

    这个问题与 将嵌入其他文本的长州名称转换为两个字母的州缩写 https stackoverflow com questions 25582518 convert long state names embedded with other te
  • 为什么这些数字不相等?

    下面的代码显然是错误的 有什么问题 i lt 0 1 i lt i 0 05 i 1 0 15 if i 0 15 cat i equals 0 15 else cat i does not equal 0 15 i does not eq
  • r 中的 5 维图

    我正在尝试在 R 中绘制 5 维图 我目前正在使用rgl包以 4 个维度绘制数据 使用 3 个变量作为 x y z 坐标 另一个变量作为颜色 我想知道是否可以使用这个包添加第五个变量 例如空间中点的大小或形状 这是我的数据和当前代码的示例
  • 有没有一种简单的方法来判断存储在一个列表中的许多数据帧是否包含相同的列?

    我有一个包含许多数据框的列表 df1 lt data frame A 1 5 B 2 6 C LETTERS 1 5 df2 lt data frame A 1 5 B 2 6 C LETTERS 1 5 df3 lt data frame
  • GGPLOT2:如何在 ggplot() 脚本中绘制特定选择

    这是一个名为的大型数据集的峰值P 其中有 10 个优惠 CS 有不同的商店 SHP 具有多个数值 数据集列出了按周排序的它们 WK 2 tm 52 它创建一个大文件 仅前 6 行出现峰值 WK MND CS SHP RevCY RevLY
  • 如何将 ggrough 图表另存为 .png

    说我正在使用R包裹ggrough https xvrdm github io ggrough https xvrdm github io ggrough 我有这个代码 取自该网页 library ggplot2 library ggroug
  • 非闪亮上下文中的反应式对象绑定

    实际问题 你怎样才能近似反应性环境 行为 http shiny rstudio com tutorial lesson6 建立者shiny http shiny rstudio com函数 或者甚至可能在一个函数中使用这些函数无光泽上下文以

随机推荐

  • 为什么 String.Empty 是无效的默认参数?

    如果我输入以下内容 public Response GetArticles string Filter String Empty Body Visual Studio 给我这个错误 Filter 的默认参数值必须是编译时常量 如果我改变St
  • 读取Excel文件工作表名称

    我有一个导出过程 可将数据从 Access 表传输到 Excel 文件 有几次我遇到了问题 该过程没有在 Excel 中生成一张或多张工作表 1 张工作表 1 个表格 因此 当传输完成后 我希望 Access 检查所有工作表是否都位于 Ex
  • 如何解析具有浏览器兼容性的可编辑 DIV 文本

    我将 div 设为可编辑 当我尝试解析 div 的文本时 我需要执行以下正则表达式 innerDOM div I had downloaded all the material from the Intern br You will fin
  • AngularJS ng-options 选定值的问题

    在 AngularJS 中使用 ng options 时 我遇到了一个奇怪的问题 我的场景非常简单 与 ng model 绑定一个值作为所选选项 从后端加载 选择 的值 将加载的值绑定到 select 我从后端加载的对象是一个键 值 例如
  • Access SQL - 插入多行不起作用

    INSERT INTO EMP 1 EMP NUM EMP LNAME EMP FNAME EMP INITIAL EMP HIREDATE JOB CODE VALUES 101 News John G 08 Nov 00 502 102
  • 如何在 fancybox V2 中为 iframe 设置不同的高度/宽度?

    我一直在使用 Fancybox 1 3 4 就在那里 我在链接本身中有 iframe 的尺寸 这是我如何拥有它的一个例子 test html width 675 height 470 当我单击链接 fancybox 时 将打开具有这些尺寸的
  • 在 Fortran 90 中打开多个文件

    我想打开 10 000 个文件 文件名从abc25000 until abc35000并将一些信息复制到每个文件中 我写的代码如下 PROGRAM puppy IMPLICIT NONE integer i CHARACTER len 3
  • 在 XNA 中沿着曲线路径制作 Sprite 动画

    我想在 XNA 游戏中实现弹道轨迹 并试图找出使弹丸遵循重力曲线的最佳方法 我能想到的最好的办法是首先计算曲线并存储在 Curve 类中 然后让精灵沿着那条曲线移动 但我无法真正弄清楚如何沿着该曲线实际移动精灵 我该怎么做 或者有更好的方法
  • 如何在scrollview中滚动RecyclerView

    如何在scrollview中滚动RecyclerView上方的所有内容 我必须在滚动视图中实现 RecyclerView 如下代码所示 但不能滚动 RecyclerView 请给出答案
  • Delphi - 使用 ListView 拖放

    晚上好 我有这个代码可以使用拖放方法用于files TForm1 class TForm public procedure DropFiles var msg TMessage message WM DROPFILES end proced
  • Azure 事件网格 Blob 存储 - 防止重复 Blob 创建事件?

    我在周五的客户测试期间注意到 Blob 存储事件有一点奇怪的行为 现在我想知道是否存在导致双事件 创建 Blob 的已知情况 因此基本上外部应用程序将 blob 写入容器 大多数 blob 像往常一样只触发一个 blob 创建的事件 但由于
  • 如何在 tkinter 中访问不同类的变量?

    我已经搜索了很多 但我仍然不知道如何访问 python 中不同类的变量 在这种情况下我想访问变量self v from PageOne上课到PageTwo class 这是我的代码 import tkinter as tk import s
  • 如何将查询字符串值从 AWS API Gateway 传递到 Lambda C# 函数

    我有一个 C 方法 已成功将其发布为 AWS Lambda 函数 它看起来像这样 public class MyClass public async Task
  • 如何序列化运行时添加“属性”到Json

    我实现了在运行时向具有特殊 SystemComponent PropertyDescriptor 的对象添加 属性 的可能性 由于这些属性只能通过 ComponentModel TypeDescriptor 访问 而不能通过反射访问 因此这
  • 如何检查Access数据库表中是否存在特定列

    我想知道如何检查特定列 例如 日期 是否存在于特定表 例如 myTable 中Access数据库 我读了这个答案它提供了一个查询 该查询会产生另一个查询 IF NOT EXISTS SELECT FROM sys columns WHERE
  • 在R中如何将经度和纬度转换为可在ggplot2或ggmap中使用的格式[关闭]

    Closed 这个问题需要细节或清晰度 目前不接受答案 我得到了原始经度 纬度数据 其格式无法由 R 地图处理 所以我想知道是否有一些 R 函数或算法可以帮助我将这些原始数据转换为可读格式 也许是UTM 这是我的原始数据 纬度 32 14
  • 如何正确处理来自 ListenableFuture 番石榴的异常?

    我有一个库 其中为我们的客户提供了两种方法 同步和异步 他们可以调用他们认为适合其目的的任何方法 执行 Synchronous 等待直到得到结果 然后返回结果 execute Asynchronous 立即返回一个 Future 如果需要
  • 如何使用 Kafka 流 DSL 函数处理重复消息

    我的要求是跳过或避免使用 kafka 流 DSL API 从 INPUT 主题接收到的重复消息 具有相同的密钥 如果发生任何故障 源系统可能会向 INPUT 主题发送重复的消息 FLOW 源系统 gt 输入主题 gt Kafka Strea
  • Misra-C 2012 规则 10.1 布尔操作数在表达式为布尔类型的情况下使用

    以下几行会产生 Misra 违规 unsigned int u16 a unsigned char u8 b if u16 a u8 b Generates Misra C 10 1 violation u16 a 2 1 Generate
  • tidyr::收集不同类型的多个列

    我的问题类似于这个问题 我试图tidyr gather多列 但是 链接中提供的解决方案不太理想 因为所有列的属性通常不相同 因此它们被删除 请注意 我知道如何使用基本 R 执行此操作 但我正在尝试学习如何使用 tidyr 和 或 dplyr