如何将行添加到其他矩阵

时间:2018-02-06 21:27:06

标签: r

我有以下面板数据:

firmid date return
1        1     1
1        2     1
1        3     1
2        2     2
2        3     2
3        1     2
3        3     2

我想将这种长格式转换为宽格式,但仅限日期1看起来像这样

firmid return in date=1
 1        1
 3        2

我感谢任何建议!

3 个答案:

答案 0 :(得分:2)

df <- read.table(header = T, text = "firmid date return
1        1     1
1        2     1
1        3     1
2        2     2
2        3     2
3        1     2
3        3     2")

Base R解决方案:

df <- df[df$date == 1, ]
df$date <- NULL
df
     firmid return
1      1      1
6      3      2

data.table解决方案:

library(data.table)
setDT(df)
df <- df[date == 1, ]
df[, date := NULL]

     firmid return
1:      1      1
2:      3      2

答案 1 :(得分:1)

您也可以使用dplyr来实现它:

library(dplyr)

df2 <- df %>% 
    filter(date == 1) %>%
    select(-date)

#  firmid return
#1      1      1
#2      3      2

答案 2 :(得分:0)

另一种dplyr解决方案,允许您在firmid中拥有多个返回值:

df %>%
  filter(date == 1) %>%
  group_by(firmid, return) %>%
  summarise()