我有以下data.frame
,我想将其转换为2个独立的时间序列收入和成本的数据框架。
df1 = data.frame(year = c('2018','2019', '2020','2019','2020','2021'),
company=c('x','x','x','y','y','z'),
revenue=c(45,78,13,89,48,70),
cost=c(100,120,130,140,160,164),
stringsAsFactors=FALSE)
df1
year company revenue cost
1 2018 x 45 100
2 2019 x 78 120
3 2020 x 13 130
4 2019 y 89 140
5 2020 y 48 160
6 2021 z 70 164
如果我想为revenue
数据创建一个新的数据帧,数据按如下方式排列,并使用na来替换数据不可用的所有年份,我可以使用哪些代码来完成此操作?
2018 2019 2020 2021
1 x 45 78 13 n.a.
2 y n.a. 89 48 n.a.
3 z n.a. n.a. n.a. 70
与tidyverse…
df1 %>% filter(company == 'x') %>% pivot_wider(values_from = revenue, names_from = year)
如果您想同时获得收入和成本
library(tidyr)
df2 <- pivot_wider(df1, names_from = year, values_from = c(revenue,cost))
我想得到了你需要的。2-5为收入,6-9为成本。