重塑/收集功能可创建用于多级分析的数据集

2023-12-07

我有一个很大的数据集,其中 240 个病例代表 240 名患者。他们都接受了神经心理学测试并填写了调查问卷。此外,他们的重要其他人(以下简称:代理人)也填写了调查问卷。由于“患者”和“代理”嵌套在“夫妇”中,因此我想在 R 中进行多级分析。为此,我需要重塑我的数据集以运行此类分析。

简单地说,我想“复制”我的行。对于双主题 ID 添加一个包含 1 和 2 的新变量,其中 1 代表患者数据,2 代表代理数据。然后我希望行填充 1. 所有患者数据和包含代理数据的列为 NA 或空或其他,以及 2. 所有代理数据以及所有患者数据 NA 或空。

假设这是我的数据:

id <- c(1:5)
names <- c('id', 'p1', 'p2', 'p3', 'pr1', 'pr2', 'pr3')
p1 <- c(sample(1:10, 5))
p2 <- c(sample(10:20, 5))
p3 <- c(sample(20:30, 5))
pr1 <- c(sample(1:10, 5))
pr2 <- c(sample(10:20, 5))
pr3 <- c(sample(20:30, 5))

mydf <- as.data.frame(matrix(c(id, p1, p2, p3, pr1, pr2, pr3), nrow = 5))
colnames(mydf) <- names

>mydf

   id p1 p2 p3 pr1 pr2 pr3
1  1  6  20 22 1   10  24
2  2  8  11 24 2   18  29
3  3  7  10 25 6   20  26
4  4  3  14 20 10  15  20
5  5  5  19 29 7   14  22

我希望我的数据最终看起来像这样:

id2 <- rep(c(1:5), each = 2)
names2 <- c('id', 'couple', 'q1', 'q2', 'q3')
couple <- rep(1:2, 5)
p1 <- c(sample(1:10, 5))
p2 <- c(sample(10:20, 5))
p3 <- c(sample(20:30, 5))
pr1 <- c(sample(1:10, 5))
pr2 <- c(sample(10:20, 5))
pr3 <- c(sample(20:30, 5))

mydf <- as.data.frame(matrix(c(id2, couple, p1, p2, p3, pr1, pr2, pr3), nrow = 10, ncol = 5))
colnames(mydf) <- names2

>mydf
   id couple q1 q2 q3
1   1      1  6 23 16
2   1      2 10 28 10
3   2      1  1 27 14
4   2      2  7 21 20
5   3      1  5 30 18
6   3      2 12  2 27
7   4      1 10  1 25
8   4      2 13  7 21
9   5      1 11  6 20
10  5      2 18  3 23

或者,如果这是不可能的,就像这样:

   id couple bb1 bb2 bb3 pbb1 pbb2 pbb3
1   1      1  6  23  16
2   1      2             10   28   10
3   2      1  1  27  14
4   2      2             7    21   20
5   3      1  5  30  18
6   3      2             12   2    27
7   4      1 10   1  25
8   4      2             13   7    21
9   5      1 11   6  20
10  5      2             18   3    23

现在,为了实现这一目标,我尝试了 Melt() 函数和 Gather() 函数,感觉已经很接近了,但它仍然没有按照我希望的方式工作。

请注意,在我的数据集中,患者问卷的变量名称为 bb1:bb54,代理问卷的变量名称为 pbb1:pbb54

我尝试过的示例

df_long <- df_reshape %>%
gather(testname, value, -(bb1:bb11), -(pbb1:pbb11), -id, -pgebdat, -p_age, na.rm=T) %>%
arrange(id)

如果我正确理解你想要什么,你可以将所有内容收集成一个很长的形式,然后重新整形回稍宽的形式:

library(tidyverse)
set.seed(47)    # for reproducibility

mydf <- data.frame(id = c(1:5),
                   p1 = c(sample(1:10, 5)),
                   p2 = c(sample(10:20, 5)),
                   p3 = c(sample(20:30, 5)),
                   pr1 = c(sample(1:10, 5)),
                   pr2 = c(sample(10:20, 5)),
                   pr3 = c(sample(20:30, 5)))

mydf_long <- mydf %>% 
    gather(var, val, -id) %>% 
    separate(var, c('couple', 'q'), -2) %>% 
    mutate(q = paste0('q', q)) %>% 
    spread(q, val)

mydf_long
#>    id couple q1 q2 q3
#> 1   1      p 10 17 21
#> 2   1     pr 10 11 24
#> 3   2      p  4 13 27
#> 4   2     pr  4 15 20
#> 5   3      p  7 14 30
#> 6   3     pr  1 14 29
#> 7   4      p  6 18 24
#> 8   4     pr  8 20 30
#> 9   5      p  9 16 23
#> 10  5     pr  3 18 25
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

重塑/收集功能可创建用于多级分析的数据集 的相关文章

  • 使用 sapply 的列表和矩阵

    我有一个也许是基本的问题 我在网上搜索过 我在读取文件时遇到问题 尽管如此 我还是按照 Konrad的建议设法读取了我的文件 我很欣赏这一点 How to get R to read in files from multiple subdi
  • 使用cowplot包的多重图的中心X轴标签

    我有一个多图图形 由 2x2 配置中的 4 个图组成 我使用 cowplot 包和plot grid函数使用下面的代码排列了绘图 plot grid p1 p2 p3 p4 align vh vjust 1 scale 1 其中 p1 p4
  • R 中的聚类分析:确定最佳聚类数

    如何选择最佳的聚类数量来进行 k 均值分析 绘制以下数据的子集后 多少个簇比较合适 如何进行聚类树突分析 n 1000 kk 10 x1 runif kk y1 runif kk z1 runif kk x4 sample x1 lengt
  • 如何导入 .tsv 文件

    我需要读取一个表 tsvR 中的文件 test lt read table file drug info tsv Error in scan file what nmax sep dec quote skip nlines na strin
  • 为 Linux 安装 R 包时出错

    我试图在 R 3 3 上安装一个名为 rgeos 的包 但是当我输入 install packages rgeos 但它返回给我以下错误 其他包也会发生同样的情况 但不是所有包 gt installing source package rg
  • R:install.packages 中出现错误:无法打开连接

    我试图安装 RINDSEL 包 但无法安装它 并且不断收到以下错误 install packages 中出错 无法打开连接 我从以下位置下载了该软件包 rindsel 1 0 2 zip 综合养殖平台 http old ibpdev net
  • 如何在 rmarkdown 中显示带有 results='asis' 的格式化 R 输出

    当使用 results asis 时 有没有办法在 rmarkdown knitr 中显示格式化程序 R 输出 一个例子是以下函数 myfun lt function cat hello n cat c one 1 two 2 然后 该块将
  • 在闪亮的应用程序中使用传单地图作为过滤器

    是否可以使用传单地图来过滤闪亮应用程序中的数据 就像在 Tableau 或 Power BI 中一样 方法是单击地图上的某个状态 然后根据条件过滤另一个图表或表格选择 None
  • 如何更改数据表中的少数列名称

    我有一个包含 10 列的数据表 town tc one two three four five six seven total 需要生成我正在使用的列 一 到 总计 的平均值 DTmean lt DT lapply SD mean by t
  • 替换向量中非 %in% 向量的值

    简短的问题 我可以像这样替换某些变量值 values lt c a b a b c a b df lt data frame values 将 df values 的所有值替换为 x 其中值是neither a 或 b 输出应该是 c a
  • 为什么 data.table `:=` 的 knit 缓存失败?

    这在精神上与this https stackoverflow com q 15267018 1900520问题 但机制上一定不同 如果您尝试缓存knitr包含一个块data table 分配然后它的行为就好像该块尚未运行 并且后面的块看不到
  • R ifelse 错误地用整数替换文本

    我正在使用 Udacity 课程中的一些数据 链接 Reddit 调查回复 https s3 amazonaws com udacity hosted downloads ud651 reddit csv 我试图通过使用单个单词替代替换任何
  • 合并具有一个共同元素的集合 R

    我有一个这样的列表 lista list lista 1 c 1 2 4 6 8 9 10 11 12 19 32 34 35 36 37 38 lista 2 c 7 8 lista 3 c 13 14 16 26 27 28 29 30
  • R中的不定积分

    我正在计算方程的不定积分 我将加速度计的数据通过可视化 C 程序输入到 R 中 然后就可以很简单地得出一个方程来表示加速度曲线 这一切都很好 但是我还需要计算撞击速度 根据我在高中时代的理解 我的加速度曲线的不定积分将产生速度方程 我知道执
  • 选择一个单元格内的最小值或最大值(分隔字符串)

    我有一个数据框 其中每个样本的列可以有多个值 例如 Gene Pvalue1 Pvalue2 Pvalue3 Beta Ace 0 0381 0 00357 0 01755 0 001385 0 0037 NA 0 039 0 03 1 1
  • 如何管理和处理 R 包中的补充数据

    我想在我的 R 包中添加补充数据 我知道关于LazyData true in DESCRIPTION 但不想使用它 因为示例数据相当大 所以我创建了一个目录 data 其中包含两个 RData文件和一个datalist 我添加使用tools
  • 根据另一个向量替换向量中的值

    我想替换向量中的值 x 与另一个向量 y 陷阱 22 方法需要是动态的 以适应向量中不同数量的 级别 x 例如 考虑向量x x lt sample c 1 2 3 4 5 100 replace TRUE gt x 1 2 4 1 1 3
  • 如何加速 R for 循环?

    我正在为 R 中 GWmodel 包中的 gwr basic 函数运行以下 for 循环 我需要做的是收集任何给定带宽的估计参数的平均值 代码如下 library GWmodel data DubVoter Dub voter LARent
  • 使用 purrr::map() 更改和分配新变量名称

    我刚刚开始掌握编写函数并使用 lapply purrr map 使我的代码更加简洁 但显然还没有完全理解它 在我当前的示例中 我想重命名 lm robust 对象的系数名称 然后更改 lm robust 对象以合并新名称 我目前这样做 li
  • 计算 R 中数据帧的每一行中特定值的连续出现次数

    我有一个data frame许多位置 这么多行 的变量的每月值 我想计算值为零的连续月份 即连续单元格 的数量 如果只是从左到右阅读 这很容易 但增加的复杂性是年底与年初是连续的 例如 在下面的缩短示例数据集中 用季节而不是月份 位置 1

随机推荐

  • 找到 Google Apps 脚本来终止它

    我正在尝试谷歌脚本 我只是从示例中复制代码以使用 Google 脚本创建 Google 文档 但我忘记删除该脚本 现在的问题是脚本向我发送了大量电子邮件并在我的帐户上创建文档 我无法找到为我删除它的脚本 See 第 4096 期 请求 管理
  • 为什么A | B 允许两者结合,我该如何防止呢?

    我惊讶地发现 TypeScript 不会抱怨我做这样的事情 type sth value number data string value number note string const a sth value 7 data test c
  • 如何在 Java 应用程序中添加文件浏览器?

    我是 Java 编程新手 正在构建一个应用程序 该应用程序将添加 显示和删除给定文件夹位置中的文件 我已经使用 JFileChooser 添加了文件 并且知道如何删除这些文件 然而我被显示部分困住了 我想在我的应用程序中使用不同的图标显示文
  • 在 Fortran 90 中使用模块内部的子例程

    我有一个关于在 Fortran 90 中的模块内使用子例程的问题 这是我的代码 Module Multiplication Subroutine Two times input output Real input output output
  • Castle.Windsor 和 HttpContextWrapper

    HttpContextWrapper 和 HttpContextBase 如在这里解释 被引入是为了使 HttpContext 更加可模拟 可测试 我正在尝试使用它S arp 架构 并遇到一些问题 我的 MVC 控制器设置为在构造函数中接受
  • Python:Matplotlib - 多个数据集的概率图

    我有几个数据集 分布 如下 set1 1 2 3 4 5 set2 3 4 5 6 7 set3 1 3 4 5 8 如何使用上面的数据集绘制散点图 其中 y 轴是概率 即集合中分布的百分位数 0 100 x 轴是数据集名称 在 JMP 中
  • libstdc++ 是可重入库吗?

    我在 MAC 上使用 libstdc 来开发 Firefox 的扩展 当我在多个 Firefox 扩展中引用 libstdc 库时 我在 libstdc 库中遇到崩溃 我在想XCode编译器的libstdc 是否可重入 如果没有 是否有任何
  • 在Python命令行上定义函数时出现语法错误

    我正在尝试在 Python REPL 上定义一个函数 每次我尝试运行下面的代码时 都会收到语法错误 Code def hello print Hello hello Error C Users Desktop gt python Pytho
  • SSIS - 脚本任务:使用带有动态文件路径的 VBscript 替换文本文件中的 TEXT

    我正在使用 SSIS 脚本任务来替换文本文件中的文本 在我的 VB 脚本中 脚本中硬编码了文件路径 但我想改用用户变量 Const ForReading 1 Const ForWriting 2 Dim objFSO objFile str
  • 在 CMD 中检测可移动驱动器盘符

    我正在尝试编写一个脚本 它将检测我的 USB 可移动驱动器的字母 UUI 然后在其上创建文件夹 我为 CMD 编写了一些命令 这些命令单独运行时可以工作 然而 当我将它们放入bat文件中时 我总是会遇到一些错误 下面是bat文件中的命令 f
  • 从流图像创建视频 C#

    如何在 C 中从流图像 只有图像 没有声音 构建视频 这是我的应用程序的一些代码 static int ii 1 public void drawBitmap byte data MemoryStream ms new MemoryStre
  • 当浏览器不支持媒体查询时到底会发生什么?

    我正在使用媒体查询构建我的网站以适应不同的屏幕尺寸 巧合的是 我在一台旧电脑上用未更新的浏览器检查了我的网站 发现我得到的是移动内容和桌面内容的混合体 但是我没有办法查看代码 因为没有安装萤火虫或类似的东西 我的问题是如果浏览器不接受 cs
  • 在正则表达式字符括号中包含连字符?

    validator addMethod AZ09 function value return a zA Z0 9 test value Only letters numbers and are allowed 当我使用类似的东西时test
  • 条件中额外的括号有意义吗?

    我正在使用一些较旧的 JavaScript 代码 并偶然发现在如下情况下广泛使用额外的括号 if foo if bar if lorem ipsum if functionCall1 functionCall2 这种做法有意义吗 我是否不知
  • 在画布单词搜索游戏中创建线条

    I created word search game in canvas Now I want when user select character for determine word draw line for highlight th
  • 使用 WM_SETFOCUS 和 WM_KILLFOCUS

    在 Delphi 中 我有两个编辑框和一个按钮 默认选择 Edit1 我想使用消息来改变焦点 但如果我按照下面的方法做 那么这一切都会因为两个编辑中的选择范围 插入符号在错误的框中等而变得混乱 我使用消息的原因是这样我可以控制外部应用程序中
  • Spring 事务和 hibernate.current_session_context_class

    我有一个使用 Hibernate 4 和 Spring Transactions 的 Spring 3 2 应用程序 所有方法都运行良好 我可以正确访问数据库以保存或检索实体 然后 我引入了一些多线程 由于每个线程都访问数据库 我从 Hib
  • 尝试加载“Oracle”dbDriver 时出现 ORA-01804 错误

    我在用着ROracle并在 R 中执行以下命令 Sys getenv drv lt dbDriver Oracle 这是我在最后一行之后得到的错误 Error in oci Driver oci drv interruptible inte
  • python 正则表达式转义字符

    We have gt gt gt str exit r ndrwxr xr x 2 root root 0 Jan 1 2000 x1b 1 34mbin x1b 0m r ndrwxr xr x 3 root root 0 Jan 1 2
  • 重塑/收集功能可创建用于多级分析的数据集

    我有一个很大的数据集 其中 240 个病例代表 240 名患者 他们都接受了神经心理学测试并填写了调查问卷 此外 他们的重要其他人 以下简称 代理人 也填写了调查问卷 由于 患者 和 代理 嵌套在 夫妇 中 因此我想在 R 中进行多级分析