我有以下虚拟数据
ID part 1 ID part 2 Year Value
312 214 2013/14 123
312 214 2014/15 245
312 214 2015/16 126
442 346 2013/14 142
442 346 2014/15 975
442 346 2015/16 245
我试图将它组合起来,以便拥有广泛的数据。使用扩展函数,spread(data, Year, Value)
得到一个类似于下面的表(忽略行顺序)。
ID part1 ID part2 2013/14 2014/15 2015/16
312 214 123 NA NA
442 346 142 NA NA
312 214 NA 245 NA
312 214 NA NA 126
442 346 NA NA 245
442 346 NA 975 NA
所需的输出将根据它们的ID对它们进行分组。
ID part1 ID part2 2013/14 2014/15 2015/16
312 214 123 245 126
442 346 142 975 245
请注意,它已根据两部分ID收集了条款。
基本上我是在gather
函数的正好相反之后。
答案 0 :(得分:0)
您可以使用tidyverse动词将数据分组并传播到宽屏格式。
library(tidyr)
library(dplyr)
df <- read.table(text = "
ID1 ID2 Year Value
312 214 2013/14 123
312 214 2014/15 245
312 214 2015/16 126
442 346 2013/14 142
442 346 2014/15 975
442 346 2015/16 245", header = TRUE, stringsAsFactors = FALSE)
df %>%
group_by(ID1, ID2) %>%
spread(Year, Value) %>%
ungroup
# # A tibble: 2 x 5
# ID1 ID2 `2013/14` `2014/15` `2015/16`
# <int> <int> <int> <int> <int>
# 1 312 214 123 245 126
# 2 442 346 142 975 245