dcast 重命名所有变量以数字开头

2024-02-05

所以我得到的数据如下所示:

           id year principal interest
 1: 011000600 2013      0.00     0.00
 2: 011000600 2014    544.03     0.00
 3: 011000700 2013      0.00     0.00
 4: 011000700 2014      0.01     0.00
 5: 011000800 2013    363.44    12.79
 6: 011000800 2014   2005.98     0.00
 7: 011000900 2013      0.00     0.00
 8: 011000900 2014      0.00     0.00
 9: 011001000 2013      0.00     0.00
10: 011001000 2014      0.00     0.00
11: 011001100 2013      0.00     0.00
12: 011001100 2014   1723.24     0.00
13: 011001560 2013      0.00     0.00
14: 011001560 2014      0.00     0.00
15: 011001650 2013      0.00     0.00
16: 011001650 2014      0.00     0.00

(基本上是一堆变量的纵向样本)

数据偏大,所以我正在使用data.table对于一切。我重塑它以获得每个id按行唯一:

datam<-melt(data,id=c("id","year"))
data1<-dcast.data.table(datam,id~...)

这产生:

          id 2013_principal 2013_interest 2014_principal 2014_interest
1: 011000600           0.00          0.00         544.03             0
2: 011000700           0.00          0.00           0.01             0
3: 011000800         363.44         12.79        2005.98             0
4: 011000900           0.00          0.00           0.00             0
5: 011001000           0.00          0.00           0.00             0
6: 011001100           0.00          0.00        1723.24             0

这当然是form我想要的数据,但是列名以数字开头是一件痛苦的事。

对于如何处理这个问题有什么建议吗?我更愿意:

          id principal_2013 interest_2013 principal_2014 interest_2014
1: 011000600           0.00          0.00         544.03             0
2: 011000700           0.00          0.00           0.01             0
3: 011000800         363.44         12.79        2005.98             0
4: 011000900           0.00          0.00           0.00             0
5: 011001000           0.00          0.00           0.00             0
6: 011001100           0.00          0.00        1723.24             0

(将年份切换为后缀) 我尝试在铸造时更加明确,例如

data2<-dcast.data.table(datam,id~year+...)
data3<-dcast.data.table(datam,id~...+year)

无济于事:

data2
          id 2013_principal 2013_interest 2014_principal 2014_interest
1: 011000600           0.00          0.00         544.03             0
2: 011000700           0.00          0.00           0.01             0
3: 011000800         363.44         12.79        2005.98             0
4: 011000900           0.00          0.00           0.00             0
5: 011001000           0.00          0.00           0.00             0
6: 011001100           0.00          0.00        1723.24             0

data3
          id 2013_principal 2013_interest 2014_principal 2014_interest
1: 011000600           0.00          0.00         544.03             0
2: 011000700           0.00          0.00           0.01             0
3: 011000800         363.44         12.79        2005.98             0
4: 011000900           0.00          0.00           0.00             0
5: 011001000           0.00          0.00           0.00             0
6: 011001100           0.00          0.00        1723.24             0

考虑到我认为这种类型的重塑是普遍存在的,因此 dcast 的命名约定默认为这种风格似乎很愚蠢。

我还尝试根据我发现的其他一些帖子(例如here https://stackoverflow.com/questions/10662314/r-rename-subset-of-variables-in-data-frame),但运行速度慢得难以想象(完整数据集中大约有 400 个变量需要重命名)

names(data)<-ifelse(substr(names(data),1,2) %in% c("19","20"),    
                    paste(substr(names(data),6,nchar(data)),
                          substr(names(data),1,4),sep="_")   ,
                    names(copy))

(我试图找到以年份开头的所有变量 - 19xx 或 20xx - 并尝试交换开头和结尾)


更好的是,随着新的发展dcast在 data.table 中v1.9.5+ https://github.com/Rdatatable/data.table/wiki/Installation,我们可以同时投射多个列..

require(data.table) # v1.9.5+
dcast(dt, id ~ year, value.var = c("principal", "interest"))
#          id principal_2013 principal_2014 interest_2013 interest_2014
# 1: 11000600           0.00         544.03          0.00             0
# 2: 11000700           0.00           0.01          0.00             0
# 3: 11000800         363.44        2005.98         12.79             0
# 4: 11000900           0.00           0.00          0.00             0
# 5: 11001000           0.00           0.00          0.00             0
# 6: 11001100           0.00        1723.24          0.00             0
# 7: 11001560           0.00           0.00          0.00             0
# 8: 11001650           0.00           0.00          0.00             0

不再需要melt不必要地之前cast,因此相当有效。

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

dcast 重命名所有变量以数字开头 的相关文章

  • 如何在 R 中关闭管道连接之前获取输出?

    在 R 中 我们可以使用以下命令打开管道连接pipe 并写信给它 我观察到以下情况 我不太明白 让我们使用一个python管道例如 z pipe python open w cat x 1 n file z cat print x n fi
  • r dplyr - 读取文件列表并使用文件名作为变量

    我想用每个文件的名称替换 image annotate 下面的 文本 library dplyr library purrr library magick list files path pattern png full names T g
  • 当我创建新变量时出了什么问题?

    我想根据原始变量施加的条件创建一个新变量 比方说 原始变量 var 是由 1 20 中的随机样本组成的向量 并且 当原来的 var 大于10时 新变量 newvar 被设置为缺失 当 var 小于10时 新变量 newvar 被设置为等于
  • 使用 R 中的 reshape 函数处理多个匹配行

    所以我有以下数据框df X Y Z ID value 1 0 20 135 a 20 2 0 20 135 a 30 3 0 20 135 b 40 4 20 104 20 c 10 5 20 104 20 b 15 我想要的最终输出 X
  • aggregate() 将多个输出列放入矩阵中

    我要计算某个变量的多个分位数 gt res1 lt aggregate airquality Wind list airquality Month function x quantile x c 0 9 0 95 0 975 gt head
  • 如何在Shiny中引用ui.R中的反应元素

    我正在使用 ShinyDND 包制作一个具有拖放功能的应用程序 我想将输入中的列表作为 DragSetUI 的参数传递 该函数需要在 ui R 中运行 我尝试了renderUI和uiOutput 它几乎可以工作 但是拖动的元素无法放置在放置
  • 添加不同 data.frame 中缺失的列并填充 0 [重复]

    这个问题在这里已经有答案了 我有以下情况 df1 a b c d 1 2 3 4 df2 a c 5 6 我想要的结果是 用 df1 中缺失的列填充第二个 data frame 并用零填充它们 所以结果应该是 df3 a b c d 5 0
  • 查找表中第三个四分位数以上的频率

    我有一个大数据框架 对 57 个变量的超过 239k 观察值 其中包含一些疾病描述以及针对不同年龄段的人针对这些疾病使用的药物 我想在每种疾病描述的使用频率前四分之一中找到这些药物 为了制作一个可重现的示例 我创建了一个包含 1000 个观
  • R Shinydashboard 根据选项卡选择显示/隐藏 UI 元素

    如果有人可以提供帮助 我正在努力满足要求 我必须根据用户的选项卡面板选择在仪表板侧栏上显示 隐藏一些元素 这是 UI 代码的一部分 可让您了解我的应用程序的结构 我需要仅在 tabpPanel 2 上显示 Fourthoutput Fift
  • 如何为每个条形图制作具有定义水平边框的堆叠条形图

    我有一些数据想以一种我不知道如何在条形图中显示的方式 希望你能帮我解决这个问题 我的表由 4 列组成 簇 0 6 IgG Status mild high mild low Severe High 患者 1 16 和值 每个簇的标准化值 这
  • 加载 plyr 包时出现问题

    我使用 R 2 13 1 但未能成功尝试在 R 中加载包 plyr 1 6 我已将其手动安装到目录 R library 中 我的代码是 libPaths R library library plyr 我收到消息 库 plyr 中的错误 pl
  • selectInput 的动态数量

    我是闪亮的新手 所以这可能是一个非常基本的问题 我想编写一个闪亮的应用程序 其中用户输入 n 我们得到 n 个 selectInput 选项 但我无法做到这一点 基本上任何形式的 for 循环都不起作用 我尝试的代码如下 library s
  • 如何禁用“保存工作区图像?” R 中的提示?

    当我退出交互式 R shell 时 它每次都会显示一个烦人的提示 gt gt Save workspace image y n c n 我总是对此回答 不 因为如果我想保存我的工作 我就会这么做before试图退出 如何去掉这个提示呢 No
  • mutate() 尝试在使用美元符号运算符时使用全局变量的值进行提取

    我使用得到了有趣的结果mutate with a 当全局环境中碰巧存在与要提取的元素同名的变量时进行提取 我正在运行 R 3 1 3 和 dplyr 0 4 3 9 这工作正常 library dplyr df lt data frame
  • spplot 的图例范围和颜色分布问题

    我的绘图和图例中的颜色范围是否正确存在问题 这是我使用的代码 data ch4 lt read csv2 v42 CH4 1970 TOT txt skip 3 stringsAsFactors FALSE header F num dat
  • r - 根据第一个向量重新排序第二个向量

    寻找解决方案来执行以下操作 有两个向量 a lt c 2 1 3 4 7 6 5 9 8 10 b lt c 3 2 1 6 5 4 7 8 9 10 我想创建第三个向量 它给出向量的顺序b需要重新排序 使其顺序与a 在这种情况下我想得到
  • 使用两列数据分割数据帧并对结果数据帧列表应用通用转换

    我想根据两列中的值将一个大数据帧拆分为一个数据帧列表 然后 我想对结果列表中的所有数据帧应用通用数据转换 滞后转换 我知道 split 命令 但只能让它一次处理一列数据 您需要将所有想要分割的因素放在一个列表中 例如 split mtcar
  • 在ggplot2中绘制大多边形地图的小区域

    我有一个 shapefile 我使用它在 ggplot2 中进行了强化和绘制geom polygon 我怎样才能只绘制这张地图的一小部分区域 我的完整地图看起来不错 但我的小区域很混乱 这是一个工作示例 这个小形状文件可以从以下位置获得 h
  • 如何绘制对数似然函数图

    我想绘制 pi 和 pi 之间的对数似然函数 对数似然函数 llh lt function teta x sum log 1 cos x teta 2 pi x c 3 91 4 85 2 28 4 06 3 70 4 04 5 46 3
  • 提取模型摘要并将其存储为新列

    我是新来的purrr范例并正在努力解决它 根据一些来源 我已经设法嵌套一个数据框 在嵌套数据上运行线性模型 从每个 lm 中提取一些系数 并为每个 lm 生成摘要 我想做的最后一件事是从摘要中提取 r squared 我原以为这将是我想要实

随机推荐

  • 通过 UIViewControllerRepresentable 实现复杂的 UIKit + SwiftUI 界面

    我正在构建一个相机应用程序 其中所有 UI 都在 SwiftUI 父级 中 其中包含一个包含所有录制功能的 UIKit 控制器 用户界面非常复杂 因此如果可能的话 希望项目保留这种结构 UIKit 类有一些函数 例如 startRecord
  • 从函数返回数组[重复]

    这个问题在这里已经有答案了 这是我的代码 double hour payload add int entries double array int index 0 k 0 int totalpayload 0 double returnar
  • 对于较新的编译器,使用 std::async 的默认启动策略是否更好?

    众所周知 使用默认启动策略可能会导致延迟执行std async 参见示例C 编译器如何在 std async 的延迟执行和异步执行之间进行选择 https stackoverflow com questions 46102206 how d
  • 远程 Watir-Webdriver IE 表单字段无法识别文本和按键

    我一直在使用黄瓜 Watir Webdriver用IE就好了 在我的测试中 我转到表单字段并输入数据 然后单击保存按钮 所有动作都效果很好 最近我决定去硒网格2出于性能原因在机器上分配测试 它在 FF 和 Chrome 上运行得很好 但我开
  • Keras 不使用 fit_generator() 进行训练

    我正在使用 Keras 2 0 4 TensorFlow 后端 执行图像分类任务 我正在尝试训练我自己的网络 没有任何预训练参数 由于我的数据很大 我无法将所有数据加载到内存中 为此我使用ImageDataGenerator flow fr
  • Apache PDFBox:如何指定要输出的文本的位置

    所以基本上我已经实现了在特定位置生成 pdf 时创建文本 但现在我的问题是 如何处理位于不同位置的文本 预期生成的 PDF contentStream setLeading 15 contentStream newLineAtOffset
  • 如何使用 numpy 创建线性间隔点的数组?

    我正在尝试使用 numpy 创建一个等距点的数组 如下所示 array 0 0 05263158 0 10526316 0 15789474 0 21052632 0 26315789 0 31578947 0 36842105 0 421
  • 为什么 Integer 类缓存值在 -128 到 127 范围内?

    关于我之前的问题 为什么 与 Integer valueOf String 的比较对于 127 和 128 给出不同的结果 https stackoverflow com questions 20877086 confusion in me
  • 在opencv中加载svg图像

    我正在尝试下载 svg 图像并将其打开opencv https opencv org 以便进一步加工 我正在做的是将 svg 格式转换为 png 格式cairosvg https cairosvg org 使用打开它Pillow https
  • 默认情况下,弹性搜索的最大和最小日期是多少?

    Intro 我们有一个类注释为 Document有日期字段 E g Document indexName notif index type notif type shards 1 replicas 0 refreshInterval 1 p
  • Swift:从 iOS 7 编译 Archive 时出现分段错误

    我一直遇到这个问题 所以我开始用 Swift 创建一个新的单视图应用程序 适用于 iPhone 和 iPad 当目标是 iOS 8 1 时 一切正常 但如果我设置 iOS 7 1 或 7 则会出现分段错误 当我转到 产品 gt 存档 时 当
  • Centos+Apache+passenger+rails:从 www 文件夹运行 Rails 应用程序

    我正在尝试学习 Rails 所以我是新手 希望得到一些帮助 我试图同时运行多个应用程序 但遇到了一个奇怪的问题 当我尝试用 Rails 生成东西时 它给了我一个权限错误 我浏览了 stackoverflow 和其他几个网站 但没有找到任何好
  • 适用于 Foundry 中的业务/最终用户的电子表格上传

    Foundry 是否具有对将电子表格 相同架构 上传和附加到一个数据集的本机支持 并具有适合业务 最终用户的界面 我正在评估一个用户工作流程 其中涉及临时接收表格电子表格并使用常规编程方法附加它们 我正在尝试在 Foundry 中启用此工作
  • 从 XPages 全局删除 Dojo

    At http www dominoguru com pages 11182010085538 html http www dominoguru com pages 11182010085538 html and http dpastov
  • 限制 python 脚本位置

    我想知道是否有一种方法可以控制 python 脚本的运行位置 这样Python就只允许运行某些位置的脚本 我们正在运行带有 Windows 域控制器的 Windows 环境 原因是作为在具有严格安全要求的环境中锁定 python 的一步 给
  • Python 中 dict 类的动态运算符重载

    我有一个类可以动态重载基本算术运算符 如下所示 import operator class IshyNum def init self n self num n self buildArith def arithmetic self oth
  • 错误:ADB 退出,退出代码为 1 执行流式安装

    我在运行时收到以下错误flutter run然而 在某些项目上 在其他项目上它工作得很好 base Nusraths MacBook Pro flutter uber clone rahama flutter emulators launc
  • android webview 的自定义字体

    我在我的应用程序中使用 webview 我想使用自定义字体以波斯语显示文本 我将字体放在 asset 文件夹中 并编写了一种在 webview 中放置文本的方法 但在不支持波斯语的 api8 中 它显示未知字符而不是我的文本和支持波斯语的
  • 对不是 的直接子级的输入显示选项卡表单验证

    当未聚焦的选项卡出现验证错误时 选项卡标题应显示为红色 相反 当未聚焦的选项卡出现验证错误时 选项卡标题不会给出任何错误指示 当我使用子组件时会发生此问题 如果所有组件都是在创建 编辑级别定义的 则该选项卡将按预期变为红色 但如果存在嵌套组
  • dcast 重命名所有变量以数字开头

    所以我得到的数据如下所示 id year principal interest 1 011000600 2013 0 00 0 00 2 011000600 2014 544 03 0 00 3 011000700 2013 0 00 0