Pracuję z następującymi danymi:
#Reproducible Example
Bills <- c("93-HCONRES-106", "93-HCONRES-107", "93-HCONRES-108")
Members <- c("00134", "00416;00010;00017;00026", "00416;00503;00513;00568")
data <- data.frame(Bills, Members)
Gdzie dane wyglądają tak:
#Data Structure
Bills Members
1 93-HCONRES-106 00134
2 93-HCONRES-107 00416;00010;00017;00026
3 93-HCONRES-108 00416;00503;00513;00568
To, co chciałbym, jest dla zestawu danych, aby każdy rachunek odpowiada każdemu członkowi. Dane tak wyglądają:
Bills Members
93-HCONRES-106 00134
93-HCONRES-107 00416
93-HCONRES-107 00010
93-HCONRES-107 00017
93-HCONRES-107 00026
93-HCONRES-108 00416
93-HCONRES-108 00503
93-HCONRES-108 00513
93-HCONRES-108 00568
Każdy kod, który można podzielić, byłoby bardzo doceniane.
Dzięki tak bardzo za całą pomoc
2 odpowiedzi
Możemy użyć separate_rows
z tidyr
library(dplyr)
library(tidyr)
data %>%
separate_rows(Members)
# Bills Members
#1 93-HCONRES-106 00134
#2 93-HCONRES-107 00416
#3 93-HCONRES-107 00010
#4 93-HCONRES-107 00017
#5 93-HCONRES-107 00026
#6 93-HCONRES-108 00416
#7 93-HCONRES-108 00503
#8 93-HCONRES-108 00513
#9 93-HCONRES-108 00568
Lub wyodrębnij elementy do list
, a następnie unnest
library(stringr)
data %>%
mutate(Members = str_extract_all(Members, "[^;]+")) %>%
unnest(c(Members))
Lub z base R
stack(setNames(strsplit(as.character(data$Members), ";"), data$Bills))
Używanie danych.Table:
library(data.table)
dt1 <- data.table(Bills, Members)
dt2 <- melt(dt1[, c("V1", "V2", "V3", "V4") := tstrsplit(Members, ";")][, Members := NULL], id.vars = "Bills")[!is.na(value)][order(Bills)]
Podobne pytania
Nowe pytania
r
R to darmowy język programowania typu open source i środowisko oprogramowania do obliczeń statystycznych, bioinformatyki, wizualizacji i obliczeń ogólnych. Proszę podać minimalne i powtarzalne przykłady wraz z pożądanymi wynikami. Użyj dput () dla danych i określ wszystkie pakiety inne niż podstawowe za pomocą wywołań biblioteki (). Nie osadzaj obrazów dla danych lub kodu, zamiast tego użyj wciętych bloków kodu. W przypadku pytań związanych ze statystykami należy skorzystać z https://stats.stackexchange.com.