Вот рабочий процесс на основе dplyr
. Я выбираю интересующие вас столбцы, используя matches
, чтобы дать регулярное выражение для сопоставления имен столбцов, чтобы избавиться от необходимости выписывать «Findex2006», «Findex2007» и т. Д. Это особенно удобно, если в итоге вы получите более только эти два года для работы. Затем я собрал данные в длинный формат, исключая от CompanyID
до ISIN
. Затем separate
с sep = -4
разделяет measure
(например, «Findex2006») на два столбца, где значение для второго столбца начинается с 4 символов в конце каждой строки (например, «Findex» и «2006»). Там было несколько NA
, которые я отфильтровал, а затем spread
возвращает их в широкую форму, но столбец больше не основывается на годе.
library(tidyverse)
df <- read.table(text =
"CompanyID Name Country ISIN Director2006 Gender2006 F2006 M2006 Findex2006 Fperce2006 Total2006 Blauindex2006 Director2007 Gender2007 F2007 M2007 Total2007 Findex2007 Blauindex2007 Fperce2007
25830 BANKxxx Austria AT000504 11734844255 M 2 3 1 0.4 5 0.48 11734844255 M 1 4 5 1 0.32 0.2
25830 BANKxxx Austria AT000504 1878371165 F NA NA NA NA NA NA 5524344997 F NA NA NA NA NA NA
25830 BANKxxx Austria AT000504 5524344997 F NA NA NA NA NA NA 5524354997 M NA NA NA NA NA NA
25830 BANKxxx Austria AT000504 5524354997 M NA NA NA NA NA NA 5742347684 M NA NA NA NA NA NA
25830 BANKxxx Austria AT000504 6613115791 M NA NA NA NA NA NA 40160443378 M NA NA NA NA NA NA
12339 BANKyyy Belgium AT034003 5524344997 M 0 2 0 0 2 0 5524344997 M 0 2 2 0 0 0
12339 BANKyyy Belgium AT034003 5524354997 M NA NA NA NA NA NA 5524354997 M NA NA NA NA NA NA",
header = T, stringsAsFactors = F)
df %>%
select("CompanyID", "Name", "Country", "ISIN", matches("Findex|Fperce|Blauindex|Total")) %>%
gather(key = measure, value = value, -CompanyID:-ISIN) %>%
separate(measure, into = c("measure", "Year"), sep = -4) %>%
filter(!is.na(value)) %>%
spread(key = measure, value = value)
#> CompanyID Name Country ISIN Year Blauindex Findex Fperce Total
#> 1 12339 BANKyyy Belgium AT034003 2006 0.00 0 0.0 2
#> 2 12339 BANKyyy Belgium AT034003 2007 0.00 0 0.0 2
#> 3 25830 BANKxxx Austria AT000504 2006 0.48 1 0.4 5
#> 4 25830 BANKxxx Austria AT000504 2007 0.32 1 0.2 5
Создано в 2018-05-09 пакетом Представ (v0.2.0).