以下是我的数据:
# A tibble: 12 x 6
X1 X2 revenue concentration payroll empl
<chr> <chr> <int> <dbl> <int> <int>
1 22 UTILITIES NA NA NA NA
2 NA A 411713327 100 594684702 703
3 NA B 60450109 14.7 89399263 565
4 NA C 94267425 22.9 62051796 221
5 NA D 167024533 40.6 735288219 583
6 NA E 265695265 64.5 406753391 541
我想要的是以下
X1 X2 A.revenue B.revenue C.Revenue A.concentration B.concentration C.concentration A.payroll B.payroll C.Payroll A.empl B.empl C.empl
<chr> <chr> <int> <dbl> <int> <int>
1 22 UTILITIES 411713327 60450109 9426742 100 14.7 22.9 40.6 64.5 etc.etc...
我知道没有足够的解释,但我希望这似乎是可以理解的。
答案 0 :(得分:0)
希望这是足够普遍的,但正如@ 42评论,我们可以使用更广泛的问题描述:
library(tidyverse)
df %>%
mutate(X2b = ifelse(!is.na(X1),X2,NA)) %>%
fill(X1,X2b) %>%
filter(!is.na(revenue)) %>%
gather(,,-c(X1,X2,X2b)) %>%
unite(key,key,X2,sep=".") %>%
spread(key,value)
#
# X1 X2b concentration.A concentration.B concentration.C concentration.D concentration.E empl.A empl.B empl.C empl.D empl.E
# 1 22 UTILITIES 100 14.7 22.9 40.6 64.5 703 565 221 583 541
# payroll.A payroll.B payroll.C payroll.D payroll.E revenue.A revenue.B revenue.C revenue.D revenue.E
# 1 594684702 89399263 62051796 735288219 406753391 411713327 60450109 94267425 167024533 265695265