为什么 reshape2 融化对我来说返回值 = NA?

2023-12-25

为什么重塑2melt return value = NA for me?

它对我来说适用于 reshape,但不适用于 reshape2:

这是一个示例数据文件:

"","station_id","year","month","day","h1","h2","h3","h4","h5","h6","h7","h8","h9","h10","h11","h12","h13","h14","h15","h16","h17","h18","h19","h20","h21","h22","h23","h24"
"1",1,2004,1,1,46,46,45,41,39,35,33,33,36,47,53,54,55,55,55,55,52,46,40,40,39,38,40,41
"2",1,2004,1,2,43,44,46,46,47,47,47,47,47,47,47,49,52,56,54,56,57,53,50,47,46,45,45,45
"3",1,2004,1,3,45,46,46,44,43,46,46,47,51,55,56,59,65,68,69,68,68,65,64,63,62,63,63,62
"4",1,2004,1,4,63,62,62,62,60,60,60,62,60,64,64,66,71,70,71,72,71,68,67,67,65,64,65,64
"5",1,2004,1,5,64,63,65,64,64,64,64,64,65,66,66,67,68,68,66,66,66,66,63,54,52,49,47,47
"6",1,2004,1,6,47,46,45,43,41,41,39,39,40,43,45,44,45,46,46,46,45,39,39,39,38,36,32,32

假设它被保存为/tmp/foo.csv, then:

使用重塑:

$ R
...
Type 'q()' to quit R.

> library("reshape")
Loading required package: plyr

Attaching package: ‘reshape’

The following object(s) are masked from ‘package:plyr’:

    rename, round_any

> hlist <- NULL; for(z in 1:24) { hlist <- cbind(hlist, sprintf("h%d",z)) }
> 
> thh <- read.csv('/tmp/foo.csv')
> thm <- melt(thh,measure.vars=hlist,variable="hour")
> head(thm)
  station_id year month day hour value
1          1 2004     1   1   h1    46
2          1 2004     1   2   h1    43
3          1 2004     1   3   h1    45
4          1 2004     1   4   h1    63
5          1 2004     1   5   h1    64
6          1 2004     1   6   h1    47
> q()

使用重塑2:

$ R
...
Type 'q()' to quit R.

> library("reshape2")
> hlist <- NULL; for(z in 1:24) { hlist <- cbind(hlist, sprintf("h%d",z)) }
> 
> thh <- read.csv('/tmp/foo.csv')
> thm <- melt(thh,measure.vars=hlist,variable="hour")
> head(thm)
  station_id year month day hour value
1          1 2004     1   1   h1    NA
2          1 2004     1   2   h1    NA
3          1 2004     1   3   h1    NA
4          1 2004     1   4   h1    NA
5          1 2004     1   5   h1    NA
6          1 2004     1   6   h1    NA
> q()

你可以看到使用library("reshape"), the value列有数字,但对于libary("reshape2"),它有NA,对于相同的数据。


有更好的方法来完成您想做的事情。

以下所有内容都适用于melt() from reshape2:

# Not using hlist
melt(th, measure.vars=5:ncol(th), variable="hour")
melt(th, id.vars=1:4, variable="hour")

# Using your hlist
hlist <- NULL; for(z in 1:24) { hlist <- cbind(hlist, sprintf("h%d",z)) }
melt(th, measure.vars=as.vector(hlist), variable="hour")

# Using an alternative hlist
hlist <- paste0("h", 1:24)
melt(th, measure.vars=hlist, variable="hour")

这好像是melt()来自“reshape”接受一个矩阵作为输入measure.vars, but melt()来自“reshape2”则不然(我认为这更合理)。

更新:可重现问题示例

仅供参考,下面是一个从头到尾的方法,您可以以方便其他 Stack Overflow 用户复制和粘贴的方式分享此问题:

# Use set.seed when you want to use random numbers 
#   but want others to have the same data as you.
set.seed(1) 

# Make up some data that mimics your actual dataset
# Does not have to be your exact dataset
th <- cbind(
  data.frame(station = rep(LETTERS[1:3], each = 3),
             year = 2004, month = rep(1:3, times = 3)), 
  setNames(data.frame(
    matrix(sample(100, 45, replace = TRUE), nrow = 9)),
           paste0("h", 1:5)))

hlist <- NULL; for(z in 1:5) { hlist <- cbind(hlist, sprintf("h%d",z)) }
# Cleanup any unnecessary stuff that your code leaves behind in the workspace
rm(z) 

现在,展示你的问题。您可以使用detach(package:package_name)而不必退出并重新启动 R。

library(reshape)
head(melt(th, measure.vars = hlist, variable = "hour"))
#   station year month hour value
# 1       A 2004     1   h1    27
# 2       A 2004     2   h1    38
# 3       A 2004     3   h1    58
# 4       B 2004     1   h1    91
# 5       B 2004     2   h1    21
# 6       B 2004     3   h1    90
detach(package:reshape)

library(reshape2)
head(melt(th, measure.vars = hlist, variable = "hour"))
#   station year month hour value
# 1       A 2004     1   h1  <NA>
# 2       A 2004     2   h1  <NA>
# 3       A 2004     3   h1  <NA>
# 4       B 2004     1   h1  <NA>
# 5       B 2004     2   h1  <NA>
# 6       B 2004     3   h1  <NA>
detach(package:reshape2)

希望这可以帮助!

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

为什么 reshape2 融化对我来说返回值 = NA? 的相关文章

  • 查找嵌套列表中元素的索引?

    我有一个类似的列表 mylist lt list a 1 b list A 1 B 2 c list C 1 D 3 是否有一种 无循环 方法来识别元素的位置 例如如果我想用 5 替换 C 的值 并且在哪里找到元素 C 并不重要 我可以这样
  • 有没有办法在 RStudio 中调试 RScript 调用?

    假设我从命令行运行 R 脚本 如下所示 Rscript prog R x y z 我想检查某一行的代码 目前 我无法在 RStudio 中以交互方式调试它 因为我不知道如何传递参数 由于它设计为从命令行运行 因此如何通过命令行 RStudi
  • 指定 R 中 hist() 中的 bin 数量?

    我尝试指定垃圾箱的数量hist R为10 如下 gt hist x breaks 10 但垃圾箱的数量并不完全是 10 我尝试了几个其他数量的垃圾箱 结果发生了同样的情况 hist says breaks可以指定 给出直方图单元格数量的单个
  • 如何生成向量的所有组合[重复]

    这个问题在这里已经有答案了 假设我有 3 个绿球 2 个橙球和 8 个黄球 我想订购它们 鉴于所有相同颜色的球都是相同的 如何生成所有可能的序列 在 R 中 使用gregmisc 我可以 balls lt c orange orange g
  • 将summary()写入as.data.frame以在ggplot / R中使用

    请查找 af 数据样本t below 我正在使用以下方法进行竞争风险分析etmCIF来自etm package 产生以下结果 这很好 但需要更好的图形 曾经有一个ggtrans etm函数将数据导入ggplot 然而 这个功能显然被删除了
  • 如何使用 R 中带引号的字符值内的序列读取 CSV?

    这是一个包含两个字符列的 CSV 文件 key value a 所有字符值都用双引号引起来 并且有一个顺序 在值之一内 转义引号加分隔符 我无法通过 read csv readr 中的 read csv 或 data table 中的 fr
  • 使用 dplyr:group_by 将数据帧分成多个子集?

    有没有办法根据 group by 组使用 dplyr 将一个数据帧拆分为数据帧的子集 mtcars gt group by cyl gear gt codes 非常感谢 好吧 并不是你真的想要 但你可以这样做tidyr 即nearly一样的
  • 限制数据框中所有单元格的字符串长度?

    您好 有没有一种方法可以限制 data frame 中所有列的字符串文本大小 而不必循环遍历每一列并一次使用 str trunc 之类的东西 例如下面的数据框 我可以将所有文本大小限制为仅 5 个字符 而不必一次只执行一列吗 如果有 50
  • 如何获得属于五分位数的x?

    我正在大学学习使用 R 进行计量经济学项目 所以请原谅我的笨拙 基本上 使用并给出 一个矩阵 股票价格 行 天 列 公司股票价格 另一个矩阵 市值 行 天 列 公司市值 我必须收集第三个矩阵每天观察的属于市值分布第一五分位数的股票价格 然后
  • 在另一个 Rmd 中运行选定的块

    我已经在源 Rmd 文件中运行了分析 并且希望仅使用few来自源的块 我已经看到了一些关于从源 Rmd 中提取所有块的答案来自另一个 Rmd 中的 Rmd 文件的源代码 https stackoverflow com questions 4
  • 将 sf voronoi 多边形裁剪到边界框时出错

    我正在尝试将 voronoi polygons 使用 sf package 创建 剪辑 到边界框 但它引发了我无法定义的错误 我对 R 的空间世界不太有经验 感谢所有帮助 样本数据 stations lt structure list ST
  • 仅保留百分比的尾随零

    给出以下示例 library pander tableAbs lt Titanic 1 1 tablePct lt round prop table tableAbs 100 2 table lt cbind tableAbs tableP
  • 将数据从 R 导出到 Excel

    我试图将从 R 获得的一些结果导出到 Excel 中 但未成功 我尝试过以下代码 write table ALBERTA1 D ALBERTA1 txt sep t write csv ALBERTA1 ALBERTA1 csv your
  • 解析,用三点参数替换

    让我们考虑一个典型的deparse substitute R call f1 lt function u x y print deparse substitute x varU vu varX vx varY vy f1 u varU x
  • 使用 R 进行项目组织 [重复]

    这个问题在这里已经有答案了 可能的重复 统计分析和报告撰写的工作流程 https stackoverflow com questions 1429907 workflow for statistical analysis and repor
  • 表单提交时出现 rvest 错误

    我想从以下网页中抓取数据 https swgoh gg u zozo collection 180 emperor palpatine https swgoh gg u zozo collection 180 emperor palpati
  • R - 通过覆盖和递归合并列表

    假设我有两个带有名字的列表 a list a 1 b 2 c list d 1 e 2 d list a 1 b 2 b list a 2 c list e 1 f 2 d 3 e 2 我想递归地合并这些列表 如果第二个参数包含冲突的值 则
  • 如何在R中同时对三个字段进行网络分析

    如何在 R 中同时对三个字段进行网络分析 下面是示例数据以及desired output在最后一栏中 df lt data frame stringsAsFactors FALSE id 1 c ABC ABC BCD CDE DEF EF
  • 具有 dplyr、tidyverse 和 broom 的相关矩阵 - P 值矩阵

    全部 我想使用以下方法从相关矩阵中获取 p 值dplyr 和 或扫帚包 并同时测试多个变量 我知道其他方法 但 dplyr 对我来说似乎更简单 更直观 此外 dplyr 需要关联每个变量以获得特定的 p 值 这使得该过程更容易 更快 我检查
  • 单击 R 中的 Sankey Chart 线时添加额外的标签值

    以下 R 闪亮脚本创建一个桑基图 如下面的快照所示 我的要求是 当我单击左右节点之间的任何链接 即 a1 和 a2 时 我希望相应的 a3 的总和出现在标签中 例如 a1 中的 A 和 a2 中的 E 总共具有值 50 和 32 因此 我想

随机推荐

  • MinGW 在 NetBeans 上完全被窃听

    以下代码不应产生错误 include
  • 覆盖两个图块的多行文字 y 轴标签

    我该如何使用mtext side 2 text y axis 为下面示例中的两个图块放置 y 轴标签 也就是说 我希望能够放置一个标签 而不是放置两个单独的 y 轴标签 layout matrix 1 2 ncol 1 widths 1 h
  • RStudio - 深色主题 - 白色菜单栏

    我全新安装了带有 Cinnamon 桌面的 Arch Linux 当我在 RStudio 中将主题更改为深色时 顶部面板仍然是白色的 为什么会这样 我该如何改变它 您是否已更新到 RStudio 的最新版本
  • 我可以为`std`命名空间添加推导指南吗?

    假设我想制作一个新的演绎指南 使以下内容成为可能 std string str std basic string view sv str 这是一个好的定制吗 命名空间 std 2 4 https timsong cpp github io
  • Xcode 5 - 启动图像未在 iPhone 应用程序的 iPad 中加载

    我正在 Xcode 5 上开发一个 iPhone 应用程序 它具有 iOS 7 设计 但部署目标是 iOS 6 0 我的问题与应用程序的启动屏幕有关 它在 iPhone 上运行良好 现在 当我尝试在 iPad 上运行应用程序时 它没有加载启
  • Django 发送电子邮件:SMTPServerDisconnected:连接意外关闭

    你好 我想发送电子邮件激活使用 django 注册 redux 这是我的设置 py EMAIL BACKEND django core mail backends smtp EmailBackend ACCOUNT ACTIVATION D
  • scala 宏:延迟类型推断

    序言 这是基于 Travis Brown 的基于宏的解决方案 https stackoverflow com a 13447439 185840复制案例类属性 Given trait Entity E lt Entity E self E
  • PyYAML :控制 yaml.load() 调用的项目的顺序

    我有一个 yaml 设置文件 它在数据库中创建一些记录 setting1 name item item name1 text anothersetting2 name item item sub setting name item item
  • 将动态 JSON 值解析为 Java 对象

    在我的应用程序中 我有很多具有排序和过滤功能的概述 表格 由于不同的列可以保存不同的值类型 字符串 数字 日期 集合等 因此这些列的过滤器也可以带来不同的值 让我向您展示一些示例 已转换为 JSON 通过 REST 请求发送到服务器 对于简
  • XE7更新1和iOS 8.1模拟器不工作

    在 Delphi XE7 中将目标设置为 iOS 8 1 Simulator 时 应用程序崩溃 它部署得很好 也可以运行 但是 firemonkey 启动屏幕仍然打开并且永远不会完成加载 这种情况发生在一个普通的新移动应用程序中 只在表单中
  • SignalR:生成的代理与动态创建的集线器文件

    SignalR 集线器代理生成器的输出与动态生成的集线器代理文件本质上相同吗 如果不是 有什么区别 我的问题的一些背景 由于执行期间的依赖性问题 我正在努力使用命令行工具创建集线器代理 并且我确实认为获取动态生成的文件可能是一种更简单的方法
  • 限制 Visual Studio 的编辑区域仅显示一个函数或方法

    几年前 当我使用 VB 6 时 我可以让编辑器窗口只显示我正在处理的函数 方法 我怀念这一点 有没有一种方法 一个插件 或者一个黑客 可以让我现在做同样的事情 Thanks 看来此功能已被删除 而且没有办法解决这个问题 也许您可 以考虑为
  • ValueError:无法解析相关模型u'mutech.branch'

    我正在尝试在 models py 文件中创建外键 但是在运行 python manage py migrate 命令时 我收到以下错误 之前一切都很好 即使我撤消了所有更改 它仍然给出相同的错误 我也尝试删除我的数据库 但没有任何效果 Ap
  • SKPhysicsBody 不符合预期

    我有以下代码来创建一个矩形砖块和一个与其关联的物理体 我预计物理主体是一个与砖块相同大小和位置的实心矩形 但我得到的主体有一个位置偏移 也许还有尺寸差异 我错过的坐标系是否存在问题 解决这个问题的正确方法是什么 void addBrick
  • 跨多个区域部署 Firebase Cloud Functions

    我想跨多个区域部署相同的云功能 有简单的方法吗 由于您没有说明要部署什么类型的函数 因此我假设 https 函数 将任何其他类型的 后台 功能部署到多个区域是没有意义的 因为每个区域都可能触发每个事件 这将相当混乱 使用 https 函数
  • 当提供正则表达式时,Java 中的 String.split() 方法到底如何工作?

    我正在准备 OCPJP 考试 遇到以下示例 class Test public static void main String args String test I am preparing for OCPJP String tokens
  • UITableView 中替代单元格的不同高度

    如何制作具有不同高度的备用单元 我需要 cell1 的高度为 60 cell2 的高度为 30 我怎样才能做到这一点 提前致谢 您可以通过表视图的委托方法设置单元格的高度 CGFloat tableView UITableView tabl
  • 如何为 JSON 对象设置原型?

    我正在从服务器接收一些 JSON 对象 并且我想将其 类型转换 或 祝福 为具有已定义方法的对象 有没有办法为普通 JSON 对象设置原型 function MyClass someValue this myProperty someVal
  • Firefox 3 窗口焦点和模糊

    窗口 blur 函数 窗口焦点 假 焦点 函数 窗口焦点 真 问题是 在 Firefox 3 中 当我创建新选项卡时 它不会丢失窗口焦点 而在ff2 ie7中确实输了 在 ff3 中 当我选择另一个程序时 它只会失去窗口焦点 有人有解决这个
  • 为什么 reshape2 融化对我来说返回值 = NA?

    为什么重塑2melt return value NA for me 它对我来说适用于 reshape 但不适用于 reshape2 这是一个示例数据文件 station id year month day h1 h2 h3 h4 h5 h6