重塑数据(更快的方法)

2024-01-09

我发现了一张频率表。今天计数,我必须扩展到原始值的数据框架。我能够做到这一点,但想知道是否有更快的方法使用 reshape 包 r data.table?

原来的表是这样的:

   i1 i2 i3 i4  m  f
1   0  0  0  0 22 29
2   1  0  0  0 30 50
3   0  1  0  0 13 15
4   0  0  1  0  1  6
5   1  1  0  0 24 67
6   1  0  1  0  5 12
7   0  1  1  0  1  2
8   1  1  1  0 10 22
9   0  0  0  1 10  7
10  1  0  0  1 27 30
11  0  1  0  1 14  4
12  0  0  1  1  1  0
13  1  1  0  1 54 63
14  1  0  1  1  8 10
15  0  1  1  1  8  6
16  1  1  1  1 57 51

这是使用 dput 轻松获取数据的方法:

dat <- structure(list(i1 = c(0L, 1L, 0L, 0L, 1L, 1L, 0L, 1L, 0L, 1L, 
0L, 0L, 1L, 1L, 0L, 1L), i2 = c(0L, 0L, 1L, 0L, 1L, 0L, 1L, 1L, 
0L, 0L, 1L, 0L, 1L, 0L, 1L, 1L), i3 = c(0L, 0L, 0L, 1L, 0L, 1L, 
1L, 1L, 0L, 0L, 0L, 1L, 0L, 1L, 1L, 1L), i4 = c(0L, 0L, 0L, 0L, 
0L, 0L, 0L, 0L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L), m = c(22L, 30L, 
13L, 1L, 24L, 5L, 1L, 10L, 10L, 27L, 14L, 1L, 54L, 8L, 8L, 57L
), f = c(29L, 50L, 15L, 6L, 67L, 12L, 2L, 22L, 7L, 30L, 4L, 0L, 
63L, 10L, 6L, 51L)), .Names = c("i1", "i2", "i3", "i4", "m", 
"f"), class = "data.frame", row.names = c(NA, -16L))

我重塑数据的方法(有更快的方法吗?):

#step 1: method 1 (in this case binding and stacking uses less code than reshape)
dat2 <- data.frame(rbind(dat[,1:4], dat[, 1:4]), 
    sex = rep(c('m', 'f'), each=16),
    n = c(dat$m, dat$f))
dat2

#step 1: method 2    
dat3 <- reshape(dat, direction = "long", idvar = 1:4,
    varying = list(c("m", "f")),
    v.names = c("n"),
    timevar = "sex",
    times = c("m", "f"))
    rownames(dat3) <- 1:nrow(dat3)
    dat3 <- data.frame(dat3)
    dat3$sex <- as.factor(dat3$sex)

all.equal(dat3, dat2) #just to show both method 1 and 2 give the same data frame

#step 2
dat4 <- dat2[rep(seq_len(nrow(dat2)), dat2$n), 1:5]
rownames(dat4) <- 1:nrow(dat4)
dat4

我认为这是一个常见问题,因为当您想从文章中取出表格并复制它时,需要进行一些解包。我发现自己越来越多地这样做,并希望确保自己的效率。


这是一句单行话。

dat2 <- ddply(dat, 1:4, summarize, sex = c(rep('m', m), rep('f', f)))
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

重塑数据(更快的方法) 的相关文章

  • 按不规则时间间隔对数据进行分组求和(R语言)

    我正在看这里的 stackoverflow 帖子 R 计算一组内的观察次数 https stackoverflow com questions 65366412 r count number of observations within a
  • 如何将同一行中以逗号分隔的值拆分到R中的不同行

    我有一些数据来自谷歌表格 https forms gle rGQQL3tvA1PrE4dD8我想拆分以逗号分隔的答案 and 复制参与者的 ID 数据如下 gt head data names Q2 Q3 Q4 1 PART 1 fruit
  • R中整数类和数字类有什么区别

    我想先说我是一个绝对的编程初学者 所以请原谅这个问题是多么基本 我试图更好地理解 R 中的 原子 类 也许这适用于一般编程中的类 我理解字符 逻辑和复杂数据类之间的区别 但我正在努力寻找数字类和整数类之间的根本区别 假设我有一个简单的向量x
  • 手动设置scale_fill_distiller()的比例

    我正在尝试制作一系列图表进行比较 举例来说 我想使用iris数据集来制作这样的图 其中我已过滤以仅查看 setosa 物种 library ggplot2 library dplyr iris gt filter Species setos
  • 合并数据框而不重复行

    我想合并两个数据框 但如果有多个匹配项 则不想重复行 相反 我想总结一下那天的观察结果 来自 合并 提取两个数据框中与指定列匹配的行并将其连接在一起 如果有多个匹配项 则所有可能的匹配项各贡献一行 这是一些示例代码 days lt as d
  • 当有很多列时,使用 readr::read_csv() 导入数据时覆盖列类型

    我正在尝试使用 R 中的 readr read csv 读取 csv 文件 我导入的 csv 文件大约有 150 列 我只包含示例的前几列 我希望将第二列从默认类型 我执行 read csv 时为日期 覆盖为字符或其他日期格式 GIS Jo
  • R - 与 SpatialPolygonsDataFrame 对象相交的 SpatialLinesDataFrame 列表的嵌套循环

    我有一系列需要完成的步骤SpatialLinesDataFrame 此处的 线 基于对象与多特征中各个特征的关系SpatialPolygonsDataFrame 多边形 对象 简而言之 每个线列表元素源自单个面要素内部 并且可能会也可能不会
  • 对 data.table 中的列表列执行操作

    假设我有一个data table 例如dt lt data table foo list 1 3 4 6 bar c 2 7 如何使用 dt 框架对 foo 向量列表执行操作 操作可能是将 bar 添加到 foo 返回列表 3 5 11 1
  • R 将多个值与向量进行比较并返回向量[重复]

    这个问题在这里已经有答案了 我有一个向量 A 对于 A 的每个元素 我想检查它是否等于第二个向量 Targets 中的任何元素 我想要一个逻辑值向量 其长度为 A 作为返回 也提到了同样的问题here http r 789695 n4 na
  • 使用字符串中的变量名称访问变量值,R

    Intro 一个数据集有大量的age year变量 age 1990 age 1991 etc 我有一个字符串值数组length age years 表示这些变量 使得age years 1 回报 age 1990 etc Need 我想搜
  • 从 n,k 维矩阵数组中减去 n,k 维矩阵

    如果我有一个数组A A lt array 0 c 4 3 5 for i in 1 5 set seed i A i lt matrix rnorm 12 4 3 如果我有矩阵 B set seed 6 B lt matrix rnorm
  • R、Rcpp 与 Armadillo 中矩阵 rowSums() 与 colSums() 的效率

    背景 来自 R 编程 我正在扩展到 C C 形式的编译代码Rcpp 作为循环交换 以及一般的 C C 效果的实践练习 我实现了 R 的等效项rowSums and colSums 矩阵的函数Rcpp 我知道它们以 Rcpp 糖的形式存在 并
  • 如何在 R 中合并同名列表中的数据框?

    我有一个包含很多数据框的列表 如果它们具有相同的名称 我想合并它们 即合并所有具有相同名称 a 和 b 的数据框 像这样 a lt aaaaa b lt bbbbb c lt ccccc g lt list df1 lt data fram
  • R中的字典数据结构

    在 R 中 我有 例如 gt foo lt list a 1 b 2 c 3 如果我输入foo I get a 1 1 b 1 2 c 1 3 我怎样才能看透foo仅获取 键 列表 在这种情况下 a b c R 列表可以具有命名元素 因此可
  • 为什么数据帧上的 is.vector 不返回 TRUE?

    tl dr R 中的向量到底是什么 长版 R 中很多东西都是向量 例如 数字是长度为 1 的数值向量 is vector 1 1 TRUE 列表也是一个向量 is vector list 1 1 TRUE 好的 所以列表是一个向量 显然 数
  • R 可以创建带有可单击条形图的条形图图像以插入网页吗?

    我知道如何创建条形图 以及如何将其粘贴在网页上 例如 使用hwriteImage in the 作家包 http www embl de gpau hwriter 我想要的是每个栏都是一个在鼠标悬停时突出显示的区域 并且每个栏在单击时都有不
  • 使用officer R导出时如何提高ggplots的分辨率

    我想将图表导出到 PPT 并使用Officer 包来实现相同的目的 但是 图表的默认分辨率较低 我想更改它 我目前正在使用以下电话 ph with gg p1 type chart res 1200 其中 p1 是 ggplot 对象 运行
  • 不同编程语言中的浮点数学

    我知道浮点数学充其量可能是丑陋的 但我想知道是否有人可以解释以下怪癖 在大多数编程语言中 我测试了 0 4 到 0 2 的加法会产生轻微的错误 而 0 4 0 1 0 1 则不会产生错误 两者计算不平等的原因是什么 在各自的编程语言中可以采
  • 实现 XGboost 自定义目标函数

    我正在尝试使用 XGboost 实现自定义目标函数 在 R 中 但我也使用 python 所以有关 python 的任何反馈也很好 我创建了一个返回梯度和粗麻布的函数 它工作正常 但是当我尝试运行 xgb train 时它不起作用 然后 我
  • 如何按用户定义(例如非字母顺序)对数据框进行排序[重复]

    这个问题在这里已经有答案了 给定一个数据框dna gt dna chrom start chr2 39482 chr1 203918 chr1 198282 chrX 7839028 chr17 3874 以下代码重新排序dna by ch

随机推荐

  • 将从mongo返回的日期转换为这种格式2015-10-25

    我有一个从 mongo db 返回的 json 文件 如下所示 id date 2014 10 19T04 00 00 000Z value 29 id date 2014 10 20T04 00 00 000Z value 20 id d
  • 使用OpenMP计算PI值

    我正在尝试通过并行化蒙特卡罗代码来学习如何使用 OpenMP 该代码通过给定的迭代次数计算 PI 的值 代码的核心内容是这样的 int chunk CHUNKSIZE count 0 pragma omp parallel shared c
  • Simplecov gem 在 Rails 中缺少未经测试的文件

    Using simple covRails 应用程序中的 gem 我们可以将未测试的文件包含在报告中吗 如果是 怎么办 如果不是 该文件应该计入覆盖率 对吧 尝试编辑您的config environments test rb并设置这一行 c
  • PhpStorm 中有选择当前行的键盘快捷键吗?

    在 PhpStorm 中有扩展选择的快捷方式ctrl w 有没有选择当前所有行的快捷方式 我正在寻找类似的东西ctrl l在崇高 这样的操作是可用的 但分配的快捷键 如果有 取决于实际使用的键盘映射 任何状况之下 Settings Pref
  • 确认第一条消息后发送第二条消息。 RabbitMQ 保证顺序吗?

    假设多个生产者发布到同一个交易所 E 扇出 每个生产商都有自己的渠道 队列 Q 绑定到交换机 E 生产者 P1 向 E 发布消息 M1 并从 E 接收确认 A1 只有在确认 A1 后 第二个生产者 P2 才发布第二条消息 M2 Rabbit
  • 矩阵和向量的逐元素点积[重复]

    这个问题在这里已经有答案了 确实有类似的问题here https stackoverflow com questions 26168363 elegant expression for row wise dot product of two
  • 我可以在套件中运行单个测试吗?

    我已经为我的结构设置了一个测试套件 https github com stretchr testify suite package https github com stretchr testify suite package 在我能够通过
  • 在 iOS 中同时管理文本转语音和语音识别

    我想要我的iOS我正在开发一个应用程序 使用文本转语音功能向用户朗读从服务器接收到的一些信息 并且我还想允许用户通过语音命令停止此类语音 我尝试过 iOS 的语音识别框架 例如OpenEars我发现问题在于它正在监听和检测应用程序本身 说
  • 在 mouseenter 上旋转 div 元素并在 mouseleave 上停止旋转

    我搜索了很多 但我无法理解其实现 我是初学者 所以请帮助我 div style height 100 width 100 background color blue div javascript var x 0 var y function
  • 为什么我的开发团队应该拥有构建服务器?

    我们知道这是好事 但我发现自己向我的雇主证明了这一点 请说明为什么开发团队需要构建服务器 使用构建服务器有多种原因 没有特定的顺序 但我的脑海中浮现出以下内容 您可以简化开发人员的工作流程并减少出错的机会 您的构建服务器可以处理多个步骤 例
  • 仅在使用 jquery 最后一个键后进行 Keyup

    我正在编写一个简单的脚本来提取输入 keyup 事件的数据库信息 我遇到的问题是每次用户按下一个键时总是重复 keyup 事件 如何才能使其仅在按下最后一个键后才起作用 我想我应该在每次按键后使用像 setTimeOut 这样的函数 但我不
  • Java 中的虚拟(派生)属性是什么?

    我应该创建一个派生属性 该属性将具有处理 Mark E Brown 等值的访问器和修改器 我不明白这个词 这对我来说是新的 帮助 public String getFullName return fullName getFirstName
  • 如何增加雷达图 MPAndoid Chart 的大小?

    I want to increase size of MPAndroid Radar Chart I observed that the size increases gradually when i increase size of th
  • 使用mockito“无法解析方法”

    I use org springframework security core Authentication其中有一个方法 Collection
  • 字符串格式正值和负值以及条件颜色格式 XAML

    我正在寻找一种简单的方法来使用以下标准格式化结果 如果为正 则添加加号并将其显示为绿色 如果为负则添加减号并将其显示为红色 我已经完成了一半 我只是不知道获得颜色格式的最简单方法是什么 有没有一种不使用值转换器的方法
  • cpp文件中的C++变量可以定义为特殊符号β吗

    我们可以使用特殊字符在 C C 中定义变量吗 例如 double 如果是 如何实现这一目标 根据CPP标准工作草案 N4713 5 10 标识符 lex name 标识符是任意长的字母和数字序列 标识符中的每个通用字符名应指定一个字符 该字
  • iOS:如何获取安装引用源

    我想了解用户如何使用什么来源 归因 安装应用程序 对于 Android 可以获取引用者的 URL 但我还没有找到针对 iOS 的明显方法 有外部服务 例如 AppsFlyer http support appsflyer com entri
  • 将 QString 转换为 std::string

    我看过其他几篇关于将 QString 转换为 std string 的帖子 它应该很简单 但不知怎的 我收到了一个错误 我的代码使用cmake编译成VS项目 我使用的是VS Express 所以QT库没有问题 而且我编写的GUI除了这部分之
  • ionic-item 颜色和 href 不起作用

    我开始了一个基于侧菜单模板的离子项目 我试图更改侧面菜单中每个元素的背景颜色 我希望每个项目都有不同的颜色 我尝试添加离子颜色类
  • 重塑数据(更快的方法)

    我发现了一张频率表 今天计数 我必须扩展到原始值的数据框架 我能够做到这一点 但想知道是否有更快的方法使用 reshape 包 r data table 原来的表是这样的 i1 i2 i3 i4 m f 1 0 0 0 0 22 29 2