仅转置 data.frame 中的某些列

2023-11-24

这里是我有数据:

           am   group  v1  v2  v3    v4
1  2015-10-31       A 693 803 700   17%
2  2015-10-31       B 524 859 302   77%
3  2015-10-31       C 266 675 86    7%
4  2015-10-31       D 376 455 650   65%
5  2015-11-30       A 618 715 200   38%
6  2015-11-30       B 249 965 215   54%
7  2015-11-30       C 881 106 184   24%
8  2015-11-30       D 033 047 492   46%
9  2015-12-31       A 229 994 720   19%
10 2015-12-31       B 539 543 332   57%
11 2015-12-31       C 100 078 590   24%
12 2015-12-31       D 517 413 716   57%

问题:我怎样才能转置数据以便

  1. 转置v1-v4 and
  2. 使价值观am作为列变量
  3. group变量被复制的数量v1-v4

我想要产生的结果:

group metric 2015-10-31 2015-11-30 2015-12-31
    A     v1        693        618        229
    A     v2        803        715        994 
    A     v3        700        200        720
    A     v4        17%        38%        19%
    B     v1        524        249        539
    B     v2        859        965        543 
    B     v3        302        215        332
    B     v4        77%        54%        57%
    ...

到目前为止我已经尝试过:

name <- mydata$am
data <- as.data.frame(t(mydata[, -1]))
colnames(mydata) <- name

这不处理group按我想要的方式变量。

感谢您的帮助。


基本思想是首先采用“长”格式,然后采用“宽”格式。

这里有一些方法可以做到这一点......

melt + dcast

library(data.table) ## or library(reshape2)
dcast(melt(as.data.table(mydf), id.vars = c("am", "group")), 
      group + variable ~ am, value.var = "value")

recast

(这与熔化+铸造基本相同,但一步完成。)

library(reshape2)
recast(mydf, group + variable ~ am, id.var = c("am", "group"))

gather + spread

library(dplyr)
library(tidyr)

mydf %>%
  gather(key, value, v1:v4) %>%
  spread(am, value)

pivot_longer + pivot_wider

library(dplyr)
library(tidyr)

dd %>% 
  mutate(across(v1:v4, as.character)) %>% 
  pivot_longer(names_to = "metric", cols=v1:v4) %>% 
  pivot_wider(id_cols = c(group, metric), values_from = value,  names_from=am)

reshape

reshape(cbind(mydf[c(1, 2)], stack(mydf[-c(1, 2)])), 
        direction = "wide", idvar = c("group", "ind"), timevar = "am")
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

仅转置 data.frame 中的某些列 的相关文章

  • R 中的插补 MICE 仍不存在于数据集中

    运行 MICE 包后 5 个完整插补集中的缺失值数量从 147428 减少到 46093 但不是应该是 0 NA 吗 Thanks 这是我的 MICR 代码 imp mice newdata imputationSet1 complete
  • 如何使用 gvisMotionChart 处理 POSIXlt 格式时间?

    The googleVisR软件包出奇的好 然而 我对一个问题感到困惑gvisMotionChart关于 timevar 因为我的数据集中的时间是POSIXlt格式 例如 2009 07 02 19 00 00 2009 07 02 20
  • 无法安装bigrf包

    我在安装 bigrf R 软件包时遇到了一些极其令人沮丧的困难 我已经尝试过以下方法 install packages bigrf repo https github com aloysius lim bigrf git type sour
  • 使用 google 查询邮政编码距离

    我有两个邮政编码列表 R 语言 其中一个是孩子的地址及其学业成绩 另一个是学校的地址 我希望能够为每个孩子找到最近的学校 所以大概需要通过转换为长和纬度值来计算邮政编码之间的距离 然后我希望能够在谷歌地图上绘制每所学校的所有孩子 并看看住在
  • 如何使用Shiny中的下载按钮?

    我想下载一个csv使用 Shiny 中的下载按钮下载文件 该文件将使用辅助 r 脚本中的参数创建 SERVER output downloadData lt downloadHandler filename function paste d
  • 查找表中第三个四分位数以上的频率

    我有一个大数据框架 对 57 个变量的超过 239k 观察值 其中包含一些疾病描述以及针对不同年龄段的人针对这些疾病使用的药物 我想在每种疾病描述的使用频率前四分之一中找到这些药物 为了制作一个可重现的示例 我创建了一个包含 1000 个观
  • 匹配字符串在多列上循环

    我有来自一项开放式调查的数据 我有一个注释表和一个代码表 代码表是一组主题或字符串 我正在尝试做的事情 检查代码表中相关列中是否存在开放式注释中的单词 字符串 在评论表中为特定主题添加一个新列 并添加一个二进制 1 或 0 来表示已标记哪些
  • 使用“kde”函数进行 R 中的 5-D 核密度估计

    我想通过使用 R 的 ks 库中的 kde 函数来执行 5 维数据 x y z 时间 大小 的核密度估计 在它的手册中 它说它可以执行核密度估计1 至 6 维数据 手册第 24 页 http cran r project org web p
  • R Markdown 文档标题中的希腊字母

    R markdown 文档的标题中是否可以包含希腊字母 我试过这个 title Amylase author author date 8 March 2017 output pdf document keep tex true toc ye
  • R中的预测和预测函数之间的区别

    两者之间有什么区别吗predict and forecast R 中的函数 如果是 在哪些具体情况下应该使用它们 Intro predict 适用于多种 R 对象 模型 基础库的一部分 forecast 对于时间序列 预测包的一部分 参见示
  • 使用 != 子集 data.table 也排除 NA

    我有一个 data table 其中有一列NAs 我想删除该列具有特定值的行 恰好是 然而 我的第一次尝试导致我失去了行NA还有 gt a c 1 NA gt x lt data table a x a 1 1 2 3 NA gt y lt
  • mutate() 尝试在使用美元符号运算符时使用全局变量的值进行提取

    我使用得到了有趣的结果mutate with a 当全局环境中碰巧存在与要提取的元素同名的变量时进行提取 我正在运行 R 3 1 3 和 dplyr 0 4 3 9 这工作正常 library dplyr df lt data frame
  • 获取非零数据的列意味着

    R 可以获得数据帧非零值的 colMeans 吗 data lt data frame col1 c 1 0 1 0 3 3 col2 c 5 0 5 0 7 7 colMeans data 1 33 4 我想要这样的东西 mean dat
  • 使用shinyjs通过javascript在闪亮的应用程序中操作现有的Leaflet地图

    我有一个闪亮的应用程序 其中包含现有的传单地图 我希望能够在渲染后使用自定义 javascript 通过shinyjs包裹 一个最小的例子如下 app R packages library dplyr library leaflet lib
  • magrittr 管道中的 WOE

    如何将下面的证据代码权重放入 magrittr 管道中 df gt 我尝试过的一切似乎都不起作用 df library Information library magrittr df a c aa bb cc aa aa aa bb cc
  • 从 glmnet 获取变量选择顺序

    我一直在使用 glmnet R 包为一个目标变量 Y 数字 和 762 个协变量构建 LASSO 回归模型 我使用 glmnet 函数 然后coef fit s 0 056360 获取该特定 lambda 值的系数值 我现在需要的是变量选择
  • 使用 ggplot 绘制函数,相当于 curve()

    是否有使用绘制函数的等效方法ggplot to the curve 基础图形中使用的命令 我想另一种选择是创建一个函数值向量并绘制一条连接线 但我希望有更简单的东西 Thanks 您可以使用以下命令添加曲线stat function ggp
  • 在 R 中编写多重积分函数

    为了将以下内容转换为函数 我想知道如何用 R 代码编写以下二重积分 bar x mu 假设pi0 and pi1以向量化方式实现函数 pi 0 和 pi 1 可能的解决方案是 integral lt function n mu s pi0
  • 如何根据值扩展数据框? [复制]

    这个问题在这里已经有答案了 我有以下输入数据框 df lt data frame x c a b c y c 4 5 6 from c 1 2 3 to c 2 4 6 df x y from to 1 a 4 1 2 2 b 5 2 4
  • 拆分并保存在新的 data.frames 中

    我有一个大 data frame 144 列 我想将其分成每组 3 列 子文件或子 data frame 然后将子 data frame 保存在单独的文件中 换句话说 file1 将包含从 1 到 3 的列 file2 将包含从 6 到 9

随机推荐

  • 使用 Jersey 和 @ApplicationPath 注解加载资源

    我正在尝试在没有 web xml 的情况下将基本的球衣宁静服务部署到 Tomcat7 WebServlet loadOnStartup 1 ApplicationPath resources Path mypath name public
  • 所有警报对话框消息和文本字段已更改为单行。请检查图像

    以前所有对话框和文本字段都运行良好 但不是我不知道这些文本字段如何突然变成单行三重 就像这里的一些消息 let alert UIAlertController title Cancel Booking message Are you sur
  • MySQL CONVERT_TZ()

    我正在尝试建立一个数据库来存储用户指定的每日警报时间 例如 用户希望在每天上午 7 00 到 7 30 之间满足某个条件时收到警报 在尝试实现这一点时 我需要适应夏令时 这是我尝试的解决方案 将用户本地时区 长格式 例如 美国 东部 信息存
  • 如何在 PHPStorm 中为 CodeIgniter 框架启用自动完成

    在CodeIgniter项目中 我通常使用以下命令来执行sql res this gt db gt select gt from customer gt where customer id id gt get 但不幸的是我的 PHPStor
  • JSONPath API Gateway Body 映射中的访问变量

    使用 AWS API Gateway IS 将 api 资源配置为 Kinesis 的 AWS 代理PutRecords行动 API 使用者向我发送了一个事件列表 我需要将这些事件转发到 Kinesis 流 他们将数据发送到 API 网关的
  • CSS3 过渡 Polyfill [关闭]

    Closed 此问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 目前不接受答案 好吧 大多数人都会熟悉 CSS3 过渡 相比 jQuery 动画 我更喜欢它 因为它具有 CSS 的简单性 我唯一的遗憾是它不能在 IE 如果您提前
  • constexpr 求值分支/ constexpr 重载

    设置 我有一个使用 SIMD 内在函数的函数 并且想在一些 constexpr 函数中使用它 为此 我需要将其设为 constexpr 但是 SIMD 内在函数未标记为 constexpr 编译器的常量求值器无法处理它们 我尝试用具有相同功
  • 使用 DataContractSerializer 进行简单的数据文件版本控制

    读过数据合同版本控制我们得出的结论是 这并不是故事的全部 例如 如果您以前有 ValueA 而在新版本中它现在称为 ValueB 并且是不同的类型 并且您需要将 ValueA 转换为 ValueB 会发生什么情况 有一些回调我可以用来帮助解
  • 使用ConfigParser读取没有节名的文件

    我在用ConfigParser读取脚本的运行时配置 我希望具有不提供部分名称的灵活性 有些脚本足够简单 它们不需要 部分 ConfigParser会抛出一个NoSectionError异常 并且不会接受该文件 我怎样才能让 ConfigPa
  • 从 webdriver.io 获取数据后动态构建 Mocha 测试

    我正在寻找一种解决方案来在异步获取数据后定义 Mocha 测试 目前 我使用gulp webdriver使用 Selenium 获取 HTML 内容 我想测试某些 HTML 标签结构 例如 我想从 HTML 页面获取所有按钮结构 1 在 M
  • C 中的 sin v/s sinf 函数

    我正在尝试使用sinf函数在我的 C 程序中 但它在 MSVC 6 0 下给了我一个未定义的引用错误sin工作正常 这让我很好奇找到两者之间的区别sin and sinf 两者之间的逻辑区别是什么sin and sinf 我怎样才能实现我自
  • 如何知道是什么使休眠持久对象变脏?

    我用 hibernate 映射的对象有奇怪的行为 为了知道为什么该对象行为异常 我需要知道是什么使该对象变脏 有人可以帮助并给我提示吗 该对象是 Java Spring 上下文中的 Java 类 所以我更喜欢针对 Java 平台的答案 编辑
  • jQuery ajaxForm 返回 .json 文件

    我在 Rails 中有一个模型创建表单 我还通过 ajax 返回 JSON 到目前为止我的代码看起来像 new stem ajaxForm new stem is my form dataType json success formSucc
  • 将 JSON 日期信息解析为 C# DateTime

    我有一个返回 CLR 对象的 WCF 服务 该对象定义如下 DataContract public class Person DataMember public string FullName get return fullName set
  • Angular2 通过 Promise 获取路由的参数

    嘿 我尝试过以下代码 constructor private route ActivatedRoute ngOnInit this route params toPromise then data gt 然而它没有做任何事情 如果我交换to
  • PHP 警告:mysqli_stmt::bind_param():变量数量与准备好的语句中的参数数量不匹配

    不知道为什么我会收到此 PHP 警告消息 看来准备好的语句中有四个参数 bind param 中也有四个变量 谢谢你的帮助 if stmt mysqli gt prepare SELECT url month year cover imag
  • C++ 常量结构体成员初始化

    我有一个常数struct timespec我班的成员 我应该如何初始化它 我唯一疯狂的想法就是衍生出我自己的想法timespec并给它一个构造函数 非常感谢 include
  • 在 Gmail 中撰写邮件的 URL(具有完整的 Gmail 界面并指定收件人、密件抄送、主题等)

    我找到了一个post它提供了一个仅打开撰写消息窗口的链接示例 但是 我希望它打开一个窗口完整的 Gmail 界面但已准备好撰写新消息 当然这有效 https mail google com mail u 0 compose 但是 我还想添加
  • Go - 通过外部命令写入标准输入

    我有以下代码 它执行外部命令并将两个字段输出到控制台等待用户输入 一个用于用户名 另一个用于密码 然后我手动添加了它们 谁能给我提示如何写入标准输入以便从程序内部输入这些输入 对我来说 棘手的部分是有两个不同的字段等待输入 而我很难弄清楚如
  • 仅转置 data.frame 中的某些列

    这里是我有数据 am group v1 v2 v3 v4 1 2015 10 31 A 693 803 700 17 2 2015 10 31 B 524 859 302 77 3 2015 10 31 C 266 675 86 7 4 2