首页 > 解决方案 > 如何以字符变量的元素成为新数据框中的列的方式在 R 中转置数据框

问题描述

这是我正在使用的数据框的示例。

ID <- c(1,1,2,3)
Type <- c('A', 'B', 'A', 'A')
Value <- c(2.5, 8, 10, 7)
df <- data.frame(ID,Type,Value)
df

下面是 df 的样子:

ID 类型 价值
1 一种 2.5
1 8.0
2 一种 10.0
3 一种 7.0

我正在寻找一种方法来转置 df,使字符变量“Type”的元素成为新数据框中的列。

ID 一种
1 2.5 8
2 10.0 0
3 7.0 0

请注意,对于 ID 2 和 3,df 中仅存在类型 A 值,我希望在新数据框中的 B 列下具有零值。

标签: r

解决方案


我们可以用pivot_wider

library(dplyr)
library(tidyr)
df %>%
   pivot_wider(names_from = Type, values_from = Value, values_fill = 0)

-输出

# A tibble: 3 × 3
     ID     A     B
  <dbl> <dbl> <dbl>
1     1   2.5     8
2     2  10       0
3     3   7       0

数据

df <- data.frame(ID, Type, Value)

推荐阅读