我在一長列中有一個嵌套資料。資料代表不同商店的不同庫存商品。每個專案有 3 個值,分別表示為數量 (A)、型別 (B) 和有效期 (C)。例如,如果我們拿三個商店,專案以數字 1,2,3 列出,然后為下一個商店 1,2,3,4,5 和接下來的 1,2 等。這是一個例子好像:
df=c('1','A','B','C','2','A','B','C','1','A','B','C','1','A','B','C','2','A','B','C','3','A','B','C')
as.data.frame(df)
這是我試圖將其顯示為
|No |Qty|Typ|Exp|No |Qty|Typ|Exp|No |Qty|Typ|Exp|
|1 |A | B | C | 2 | A | B | C |
|1 |A | B | C | 2 | A | B | C |
|1 |A | B | C | 2 | A | B | C | 3 | A | B | C |
感謝您的幫助
uj5u.com熱心網友回復:
你可以試試tidyverse
library(tidyverse)
as.data.frame(df) %>%
mutate(V2 = cumsum(df == "1")) %>%
group_by(V2) %>%
mutate(V4 = 1:n()) %>%
pivot_wider(names_from = V4, values_from = df, names_prefix = "Item") %>%
ungroup() %>%
select(-V2)
# A tibble: 3 x 9
Item1 Item2 Item3 Item4 Item5 Item6 Item7 Item8 Item9
<chr> <chr> <chr> <chr> <chr> <chr> <chr> <chr> <chr>
1 1 A B C 2 A B NA NA
2 1 A B C D NA NA NA NA
3 1 A 2 A B C 3 A B
uj5u.com熱心網友回復:
使用基礎 R 的可能解決方案:
df=c('1','A','B','C','2','A','B','C','1','A','B','C','1','A','B','C','2','A','B','C','3','A','B','C')
df <- data.frame(V=df)
idx <- which(df$V == 1)
n <- length(idx)
leng <- idx[-1]-idx[-n]
leng <- c(leng,length(df$V)-idx[n] 1)
l <- split(df$V, rep(1:n, leng))
l <- lapply(l, `length<-`, max(lengths(l)))
as.data.frame(do.call(rbind,l))
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/326972.html
