如何在R

时间:2018-10-12 23:56:16

标签: r

我有三列数据

Category Date Value
A 10/12/2018 1
A 10/14/2018 2
B 10/12/2018 3
B 10/13/2018 4
C 10/12/2018 5
C 10/14/2018 6

如何转换我的输出,以使输出在顶部这样具有日期并将类别分组?

   10/12/2018 10/13/2018 10/14/2018
A     1                      2
B     3           4
C     5                      6

我尝试搜索交叉表和一些基本的R函数,并感谢您对此的想法。

2 个答案:

答案 0 :(得分:1)

这是一个重塑问题。

library(tidyr)

df %>% spread(Date,Value)

  Category 10/12/2018 10/13/2018 10/14/2018
1        A          1         NA          2
2        B          3          4         NA
3        C          5         NA          6

答案 1 :(得分:1)

您想要的称为“宽”格式。 R中有许多执行这种格式或格式化的程序包和方法。孙兵指出了dplyr方法。我更喜欢data.table方法。

## loading your data here
library(readr)
x <- read_delim("Category Date Value
A 10/12/2018 1
A 10/14/2018 2
B 10/12/2018 3
B 10/13/2018 4
C 10/12/2018 5
C 10/14/2018 6", delim = " ")

## casting your data to wide format
library(data.table)
xcast <- dcast(x, Category~Date, value.var = "Value")
xcast

返回...

  Category 10/12/2018 10/13/2018 10/14/2018
1 A         1         NA          2
2 B         3          4         NA
3 C         5         NA          6