R 使用数据框的列创建面板
我在R中有一个数据框,其中第一列表示客户机ID,其他列表示每日日期。比如说R 使用数据框的列创建面板,r,panel,R,Panel,我在R中有一个数据框,其中第一列表示客户机ID,其他列表示每日日期。比如说 id <- seq(1:4) qqqq141101 <- c(500, 0, 78, 10) qqqq141102 <- c(500, 0, 78, 10) frame <- data.frame(id, qqqq141101 , qqqq141102) frame id类似的内容(需要R库reformae2和lubridate) #您的示例数据 id您还可以通过以下方法解决此问题: libra
id <- seq(1:4)
qqqq141101 <- c(500, 0, 78, 10)
qqqq141102 <- c(500, 0, 78, 10)
frame <- data.frame(id, qqqq141101 , qqqq141102)
frame
id类似的内容(需要R库reformae2
和lubridate
)
#您的示例数据
id您还可以通过以下方法解决此问题:
library(dplyr)
library(tidyr)
library(anytime)
frame %>%
gather(day, value, -1) %>%
mutate(day = anydate(gsub('qqqq','20',day))) %>%
arrange(id)
结果是:
id day value
1 1 2014-11-01 500
2 1 2014-11-02 500
3 2 2014-11-01 0
4 2 2014-11-02 0
5 3 2014-11-01 78
6 3 2014-11-02 78
7 4 2014-11-01 10
8 4 2014-11-02 10
你所说的面板是什么意思?我指的是一个面板数据集,其中我有100天的时间,每个客户都有相应的值。“面板数据集”不是R中的概念/术语。我猜您希望通过从宽到长转换并解析列名中的日期来将第一个数据帧转换为第二个数据帧?@Jaap如果我正确理解OP,它并不完全是重复的,因为OP希望从列名中重塑和解析日期。请参阅下面我的基于reformae2
+lubridate
的解决方案。这篇文章的标题和主要问题并不是很有启发性,不幸的是……没问题,很高兴它奏效了。欢迎来到SO;-)这是一个很棒的社区,你可以通过阅读和了解如何使用它来找到一些有用的提示。
library(dplyr)
library(tidyr)
library(anytime)
frame %>%
gather(day, value, -1) %>%
mutate(day = anydate(gsub('qqqq','20',day))) %>%
arrange(id)
id day value
1 1 2014-11-01 500
2 1 2014-11-02 500
3 2 2014-11-01 0
4 2 2014-11-02 0
5 3 2014-11-01 78
6 3 2014-11-02 78
7 4 2014-11-01 10
8 4 2014-11-02 10