整理数据:分组值和保持日期
tidying data: grouping values and keeping dates
我从用于数据操作和重塑的 dplyr / tidyr 包开始。
city <- c("Brest", "Brest", "Rennes", "Rennes", "Rennes")
year<- c(2014, 2015, 2013, 2012, 2016)
values <- c(100, 100, 110, 95, 95)
# Création du data.frame
dataset <- data.frame(city, year, values)
dataset
这是我的数据集:
city year value
Brest 2014 100
Brest 2015 100
Rennes 2013 110
Rennes 2012 95
Rennes 2016 95
我在做什么:
demo <- dataset %>%
count(city, values) %>%
arrange(city)
...我的结果:
city value n. of obs
Brest 100 2
Rennes 95 2
Rennes 110 1
我期望的是:
第一个选项:
city value n. of obs year
Brest 100 2 2014, 2015
Rennes 95 2 2012, 2016
Rennes 110 1 2013
第二个选项:
city value n. of obs year1 year 2
Brest 100 2 2014 2015
Rennes 95 2 2012 2016
Rennes 110 1 2013
我可以通过向我的管道添加 mutate 来做到这一点吗?
感谢您的帮助
我们可以通过操作进行分组,然后通过 paste
将 'year' 组合在一起来 summarise
(toString
是 paste(..., collapse=", ")
的包装器)
dataset %>%
group_by(city, values) %>%
summarise(n = n(), year = toString(year))
或者如果我们想要第二个选项,在 group by 操作之后,通过 paste
ing 字符串 'year' 创建行数 (n()
) 和序列列row_number()
然后执行 spread
将其转换为 'wide' 格式
dataset %>%
group_by(city, values) %>%
mutate(n = n(), i1 = paste0("year", row_number())) %>%
spread(i1, year)
我从用于数据操作和重塑的 dplyr / tidyr 包开始。
city <- c("Brest", "Brest", "Rennes", "Rennes", "Rennes")
year<- c(2014, 2015, 2013, 2012, 2016)
values <- c(100, 100, 110, 95, 95)
# Création du data.frame
dataset <- data.frame(city, year, values)
dataset
这是我的数据集:
city year value
Brest 2014 100
Brest 2015 100
Rennes 2013 110
Rennes 2012 95
Rennes 2016 95
我在做什么:
demo <- dataset %>%
count(city, values) %>%
arrange(city)
...我的结果:
city value n. of obs
Brest 100 2
Rennes 95 2
Rennes 110 1
我期望的是:
第一个选项:
city value n. of obs year
Brest 100 2 2014, 2015
Rennes 95 2 2012, 2016
Rennes 110 1 2013
第二个选项:
city value n. of obs year1 year 2
Brest 100 2 2014 2015
Rennes 95 2 2012 2016
Rennes 110 1 2013
我可以通过向我的管道添加 mutate 来做到这一点吗?
感谢您的帮助
我们可以通过操作进行分组,然后通过 paste
将 'year' 组合在一起来 summarise
(toString
是 paste(..., collapse=", ")
的包装器)
dataset %>%
group_by(city, values) %>%
summarise(n = n(), year = toString(year))
或者如果我们想要第二个选项,在 group by 操作之后,通过 paste
ing 字符串 'year' 创建行数 (n()
) 和序列列row_number()
然后执行 spread
将其转换为 'wide' 格式
dataset %>%
group_by(city, values) %>%
mutate(n = n(), i1 = paste0("year", row_number())) %>%
spread(i1, year)