r - 如何在 R 中使用 for 循环来操作这些数据
问题描述
我有一个关于在 R 中操作数据的问题。我在这项工作中需要的是通过链接中的示例数据来操作数据。当我尝试这样做时,我尝试使用 dplyr 包,但它没有用。所以我想用for循环来做。
我想要的正是这个:
我想保持 A、B、C、D、E 类别固定,并将其旁边月份的数据。比如 1990 年 1 月、1990 年 2 月、....、1990 年 12 月、1991 年 1 月、1991 年 2 月、...、1991 年 12 月。这些月份将并排并以列的形式出现。由于在某些年份没有某些类别的数据,因此应在与这些类别对应的月份中给出“0”值。我应该如何为此编写一个 for 循环?
预先感谢您的帮助。
解决方案
使用您的照片的假冒,我写了以下内容。让我知道输出是否为 ac 这类似于 rfortin 的建议,但使用data.table
而不是dplyr
.
代码:
library(data.table)
dt <- melt(data, id.vars = c("Year", "Category"), measure.vars = c("Jan", "Feb"),
variable.name = "Month", value.name = "Profit") %>%
.[, `Month-Year`:= paste(`Month`, `Year`, sep = " ")] %>%
dcast(., `Category` ~ `Month-Year`, fun.aggregate = sum, value.var = "Profit")
数据:
data <- data.table(Year = c(1999,1999,1999,2000,2000,2000,2001,2001,2001),
Category = c("A", "B", "C","A", "B", "C","A", "B", "C"),
Jan = c(234234,3413,134,134,13423,1324,1324,1235,54),
Feb = c(234523,435234,0,2342,0,153,24,234,72))
输出:
Category Feb 1999 Feb 2000 Feb 2001 Jan 1999 Jan 2000 Jan 2001
1: A 234523 2342 24 234234 134 1324
2: B 435234 0 234 3413 13423 1235
3: C 0 153 72 134 1324 54
推荐阅读
- if-statement - Excel:带条件的列公式
- c# - getKeyDown 按键不再起作用,以前起作用。调试也没有输出
- swift - 使用 NSPersistentCloudKitContainer 时记录唯一性?
- postgresql - 在 Postgres 中循环存储过程中的数据
- google-drive-api - 我在哪里可以看到更多的 api 配额价格?
- python - Python中的条件滚动总和
- php - PHP 重定向错误 - 不确定问题(PHP 新手)
- php - 浏览器未读取解码的 html_entity_decode 文本
- c++ - boost::property 树的任何标准库实现
- ios - 添加到 UIStackView 或 UIScrollView 时,集合视图消失