我有以下資料框,我正在嘗試將其轉換為特定格式。每天添加新專案及其數量作為列。我想自動檢測R 語言中的所有專案及其數量并轉換為提到的預期輸出。
我的資料框:(每天添加數量的新專案作為新列)
id date a1_item a1_quantity a2_item a2_quantity
z1 2022-02-28 name1 10 name11 20
z1 2021-10-31 name2 20 name21 30
z2 2021-12-31 name3 10 name31 40
r3 2021-10-31 name4 40 name41 10
r4 2021-06-30 name5 30 name51 05
r5 2021-08-31 name6 10 name61 40
我的預期輸出:
id date item quanity
z1 2022-02-28 name1 10
z1 2022-02-28 name11 20
z1 2021-10-31 name2 20
z1 2021-10-31 name21 30
z2 2021-12-31 name3 10
z2 2021-12-31 name31 40
r3 2021-10-31 name4 40
r3 2021-10-31 name41 10
r4 2021-06-30 name5 30
r4 2021-06-30 name51 05
r5 2021-08-31 name6 10
r5 2021-08-31 name61 40
uj5u.com熱心網友回復:
我們可以使用pivot_longerwithnames_pattern將子字串捕獲為一個組
library(dplyr)
library(tidyr)
df1 %>%
pivot_longer(cols = contains("_"), names_to = c(".value"),
names_pattern = ".*_(.*)")
-輸出
# A tibble: 12 × 4
id date item quantity
<chr> <chr> <chr> <int>
1 z1 2022-02-28 name1 10
2 z1 2022-02-28 name11 20
3 z1 2021-10-31 name2 20
4 z1 2021-10-31 name21 30
5 z2 2021-12-31 name3 10
6 z2 2021-12-31 name31 40
7 r3 2021-10-31 name4 40
8 r3 2021-10-31 name41 10
9 r4 2021-06-30 name5 30
10 r4 2021-06-30 name51 5
11 r5 2021-08-31 name6 10
12 r5 2021-08-31 name61 40
資料
df1 <- structure(list(id = c("z1", "z1", "z2", "r3", "r4", "r5"),
date = c("2022-02-28",
"2021-10-31", "2021-12-31", "2021-10-31", "2021-06-30", "2021-08-31"
), a1_item = c("name1", "name2", "name3", "name4", "name5", "name6"
), a1_quantity = c(10L, 20L, 10L, 40L, 30L, 10L), a2_item = c("name11",
"name21", "name31", "name41", "name51", "name61"), a2_quantity = c(20L,
30L, 40L, 10L, 5L, 40L)), class = "data.frame", row.names = c(NA,
-6L))
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/439402.html
上一篇:在R中創建具有多個條件的另一個資料幀的平均值的新資料幀
下一篇:熊貓資料透視表計數
