簡體   English   中英

通過合並 R 中的兩列來重塑大型數據框

[英]Reshape large dataframe by merging two columns in R

我正在使用R 中的大型數據框,可能有 25k 行。 我的目標是合並兩列(重塑 DF),以便左側的值成為右側值的標題。 請參閱下面的示例。 這在R中可能嗎? 任何幫助表示贊賞。

我現在所擁有的:

SomeVal1    O26FF
            8B53L
            FFS4C
            2L9PT
            Z3NW0
            X2SGF
SomeVal2    0D121
            Y0483
            YAAPT
            E0OVA
            AL4AW
SomeVal3    TFOA6
            3H5G3

這就是我要的:

SomeVal1    SomeVal2    SomeVal3
O26FF       0D121       TFOA6
8B53L       Y0483       3H5G3
FFS4C       YAAPT
2L9PT       E0OVA
Z3NW0       AL4AW
X2SGF

這是一種方法 - 將空白( ""更改為NA ,然后使用fill更新具有先前非 NA 的 NA 元素,通過 'Col1' 獲取序列 - rowid並使用pivot_wider重塑為 'wide' 格式

library(dplyr)
library(tidyr)
library(purrr)
library(data.table)
df1 %>% 
    mutate(Col1 = na_if(Col1, "")) %>% 
    fill(Col1) %>% 
    mutate(rn = rowid(Col1)) %>% 
    pivot_wider(names_from = Col1, values_from = Col2, values_fill = "") %>% 
    select(-rn)
# A tibble: 6 x 3
  SomeVal1 SomeVal2 SomeVal3
  <chr>    <chr>    <chr>   
1 O26FF    "0D121"  "TFOA6" 
2 8B53L    "Y0483"  "3H5G3" 
3 FFS4C    "YAAPT"  ""      
4 2L9PT    "E0OVA"  ""      
5 Z3NW0    "AL4AW"  ""      
6 X2SGF    ""       ""     

數據

df1 <- structure(list(Col1 = c("SomeVal1", "", "", "", "", "", "SomeVal2", 
"", "", "", "", "SomeVal3", ""), Col2 = c("O26FF", "8B53L", "FFS4C", 
"2L9PT", "Z3NW0", "X2SGF", "0D121", "Y0483", "YAAPT", "E0OVA", 
"AL4AW", "TFOA6", "3H5G3")), class = "data.frame", row.names = c(NA, 
-13L))

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM