[英]R - How to reshape a dataframe based on the relationship between two columns?
[英]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.