我有一個資料框,例如
group <- c("A", "A", "B", "C", "C")
tx <- c("A-201", "A-202", "B-201", "C-205", "C-206")
feature <- c("coding", "decay", "pending", "coding", "coding")
df <- data.frame(group, tx, feature)
我想為每個功能生成一個新的 df,其中包含 tx 中“列出”的條目。我希望輸出看起來像
group <- c("A", "B", "C")
coding <- c("A-201", NA, "C-205|C-206")
decay <- c("A-202", NA, NA)
pending <- c(NA, "B-201", NA)
df.out <- data.frame(group, coding, decay, pending)
到目前為止,我還沒有找到通過dplyr函式來實作這一點的方法。我必須遍歷我的初始 df 嗎?
uj5u.com熱心網友回復:
您可以tidyr::pivot_wider使用以下功能獲取寬格式資料并使用values_fn-
df.out <- tidyr::pivot_wider(df, names_from = feature, values_from = tx,
values_fn = function(x) paste0(x, collapse = '|'))
df.out
# group coding decay pending
# <chr> <chr> <chr> <chr>
#1 A A-201 A-202 NA
#2 B NA NA B-201
#3 C C-205|C-206 NA NA
uj5u.com熱心網友回復:
這是另一種方法:
library(dplyr)
library(tidyr)
df %>%
group_by(group, feature) %>%
mutate(tx = paste(tx, collapse = "|")) %>%
distinct() %>%
pivot_wider(
names_from = feature,
values_from = tx
)
group coding decay pending
<chr> <chr> <chr> <chr>
1 A A-201 A-202 NA
2 B NA NA B-201
3 C C-205|C-206 NA NA
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/341290.html
上一篇:如何找到一列的總和?
