Увидел ответ в Python, похожий на этот вопрос, но не R, так что ради избыточности, поскольку python нет в моей рулевой рубке. Переменная данных «PublicFilings» содержит несколько значений, которые я хотел бы разделить на 4 новые переменные. Ниже перечислены три основных вывода c, но будут разные комбинации подсчетов для суждений, залогов и исков, разумеется, банкротство - да, нет, но я хотел бы, чтобы этот двоичный файл. Есть мысли о простом подходе к фрейму данных? Идентификатор можно использовать в качестве первичного ключа: комбинация «Нет данных» в качестве начального вывода, невозможность использовать запятую для разделения и желание преобразовать «да» в «двоичный» меня отбрасывает.
Existing Data
Id PublicFilings
1 Bankruptcies: No, Judgments: 0, Liens: 0, Suits: 0
2 Bankruptcies: Yes, Judgments: 0, Liens: 0, Suits: 0
3 No Data
Нет данных означает, что не найдено ни одного совпадения с сущностью, и Publi c Данные подачи не были возвращены
Converted Data
Id Bankruptcies Judgments Liens Suits
1 0 0 0 0
2 1 0 0 0
3 Null Null Null Null
df1 <-
structure(list(TranId = 1:3,
Name = c("ACME Five,","ACME","WALMART"),
Check = c("1234","1234","1235"),
Entity = c("55555","55551","55556"),
Match =c("0","0","0"),
Score = c("50","60","NA"),
Date = c("2019-01-01", "2019-01-02","2019-01-02"),
PublicFilings = c("Bankruptcies: No, Judgments: 0, Liens: 10, Suits: 0",
"Bankruptcies: Yes, Judgments: 0, Liens: 0, Suits: 0",
"No Data"),
Controls =c("2015","2015","1998"),
NumEmpoyees = c("5","8","6"),
LOB = c("Retail, Food","Retail, Food","Retail, All"),
PayScore = c("40","42","NA"),
Primary = c("CEO","CEO","CFO"),
STARTYear = c("1982","1982","1965"),
SpecEvent = c("0","0","0"),
Filings =c("0","0","1"),
PayExp =c("","","1"
)), class = "data.frame", row.names = c(NA, -3L))
View(df1)
library(dplyr)
library(tidyr)
df1 %>%
separate_rows(PublicFilings, sep = ",\\s+") %>%
separate(PublicFilings, into = c("key", "value"), sep=":\\s+") %>%
mutate(key = na_if(key, "No Data"),
value = as.integer(value %in% c("Yes", "1"))) %>%
pivot_wider(names_from = key, values_from = value) %>%
select(-`NA`)
View(df1)
# A tibble: 3 x 20
TranId Name Check Entity Match Score Date Controls NumEmpoyees LOB PayScore Primary STARTYear SpecEvent Filings
<int> <chr> <chr> <chr> <chr> <chr> <chr> <chr> <chr> <chr> <chr> <chr> <chr> <chr> <chr>
1 1 ACME~ 1234 55555 0 50 2019~ 2015 5 Reta~ 40 CEO 1982 0 0
2 2 ACME 1234 55551 0 60 2019~ 2015 8 Reta~ 42 CEO 1982 0 0
3 3 WALM~ 1235 55556 0 NA 2019~ 1998 6 Reta~ NA CFO 1965 0 1
# ... with 5 more variables: PayExp <chr>, Bankruptcies <int>, Judgments <int>, Liens <int>, Suits <int>
Warning message:
Expected 2 pieces. Missing pieces filled with `NA` in 1 rows [9].