我正在嘗試拆分單元格字串的內容,然后將行中的所有相應單元格復制到重復行中。在查看其他類似問題時,我找到了部分答案,但我的結果正在丟棄一些我仍然想保留的資料。示例表(雖然真實的有更多的列和行)
Client <- LETTERS[seq(1:6)]
Package <- c("1", "1 & 2", "2", "1 & 2","1 & 2", "")
Scope <- c("full", "rapid", "partial", "full", "full", "")
Assignee <- randomNames(6)
df <- data.frame(Client, Package, Scope, Assignee)
Client Package Scope Assignee
1 A 1 full Young, Devante
2 B 1 & 2 rapid Catholic, Kori
3 C 2 partial Maxwell, Luke
4 D 1 & 2 full Vanzant, Giovanni
5 E 1 & 2 full el-Sadiq, Aaida
6 F el-Yousef, Muneera
在此表中,我需要拆分“Package”下的資料并將資訊復制到一行中。如果我執行以下操作:
df %>%
mutate(Package = strsplit(as.character(Package), " & ")) %>%
unnest(Package)
我將包內容拆分并復制了行。如下我的結果所示,問題在于結果中省略了來自“客戶端 F”的資料。與示例表一樣,我的真實資料中會有一些行沒有“包資料”,我不想丟失這些資訊。
Client Package Scope Assignee
<chr> <chr> <chr> <chr>
1 A 1 full Young, Devante
2 B 1 rapid Catholic, Kori
3 B 2 rapid Catholic, Kori
4 C 2 partial Maxwell, Luke
5 D 1 full Vanzant, Giovanni
6 D 2 full Vanzant, Giovanni
7 E 1 full el-Sadiq, Aaida
8 E 2 full el-Sadiq, Aaida
任何建議將不勝感激。
uj5u.com熱心網友回復:
這種方法是否適合您使用 tidyr 的separate_rows:
library(tidyverse)
df <- tribble(
~Client, ~Package, ~Scope, ~Assignee,
"A", "1", "full", "Young, Devante",
"B", "1 & 2", "rapid", "Catholic, Kori",
"C", "2", "partial", "Maxwell, Luke",
"D", "1 & 2", "full", "Vanzant, Giovanni",
"E", "1 & 2", "full", "el-Sadiq, Aaida",
"F", NA, NA, "el-Yousef, Muneera"
)
df |> separate_rows(Package)
#> # A tibble: 9 × 4
#> Client Package Scope Assignee
#> <chr> <chr> <chr> <chr>
#> 1 A 1 full Young, Devante
#> 2 B 1 rapid Catholic, Kori
#> 3 B 2 rapid Catholic, Kori
#> 4 C 2 partial Maxwell, Luke
#> 5 D 1 full Vanzant, Giovanni
#> 6 D 2 full Vanzant, Giovanni
#> 7 E 1 full el-Sadiq, Aaida
#> 8 E 2 full el-Sadiq, Aaida
#> 9 F <NA> <NA> el-Yousef, Muneera
由reprex 包于 2022-06-13 創建(v2.0.1)
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/490480.html
下一篇:如何洗掉括號中的部分刺痛?
