R dplyr pivot wider with duplicates 并生成变量名

标签 r dplyr pivot-table reshape transpose

<分区>

我怎么去

df<-data.frame(id=c("A", "B", "B"), res=c("one", "two", "three"))
df

df.output<-data.frame(id=c("A", "B"), res1=c("one", "two"), res2=c(NA, "three"))
df.output

dplyr?

我不知道 a priori id 中的重复次数(在这个例子中 B 有 2 次出现),所以resX 输出数据框中的变量必须即时生成。

最佳答案

您只需要创建一个行标识符,您可以使用 dplyr 来完成,然后使用 tidyr::pivot_wider() 生成所有的 resX 变量。

library(dplyr)
library(tidyr)

df %>%
  group_by(id) %>%
  mutate(
    no = row_number()
  ) %>%
  ungroup() %>%
  pivot_wider(
    id,
    names_from = no,
    names_prefix = "res",
    values_from = res
  )
#> # A tibble: 2 × 3
#>   id    res1  res2 
#>   <chr> <chr> <chr>
#> 1 A     one   <NA> 
#> 2 B     two   three

关于R dplyr pivot wider with duplicates 并生成变量名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71379471/

相关文章:

使用 RCurl 检索 URL 提供与浏览器不同的日期格式

r - 无法使用 dplyr db_write_table() 将数据附加到 sqlite3

r - R中的左连接+反连接

powershell - 按一周/一个月中每一天的持续时间汇总任务? (PoSH)

matlab - 根据 Matlab 中单元格的现有列创建新变量

python - Pandas 数据框宽与长 - 多个 df 的 unstack、pivot 与外连接

r - 内部连接完全在一列上,而在另一列上模糊

r - 在数据框变量中查找唯一字符串

r - 无论操作系统如何,如何使 CRAN 包只下载一次数据?

r - 使用 dplyr 按组计算比率