如何将属性列表转换为表?

时间:2019-06-02 13:52:00

标签: r dataframe tidyr

我的属性列表很大,我想将它们转换成表格。

我看起来像这样:

name  Key  Value
1     age   20
1     sex   1
2     age   20
2     sex   0
3     age   22
4     age   30
5     age   29
6     age   6

我想将其转换为如下形式:

name  age  sex
1     20    1
2     20    0
3     22
4     30
5     29
6     6

有人有主意吗?

编辑 我的原始列表具有更多的价值,而不仅仅是2。我看到的所有答案都无法回答我的问题。 我会尝试用较小的桌子更好地解释它。

我的桌子:

name  key    value
1     first   0
2     first   1
2     sec     1
1     sec     2
1     tr      1
2     tr      0
3     first   0
3     sec     0
4     first   0    

想要的结果:

name first sec tr
1      0    2   1
2      1    1   0
3      0    0
4      0

1 个答案:

答案 0 :(得分:0)

以下是使用来自OP的数据tidyr::spread()的示例。

rawData <- "name,Key,Value
1,age,20
1,sex,1
2,age,20
2,sex,0
3,age,22
4,age,30
5,age,29
6,age,6"

df <- read.csv(text=rawData,header=TRUE,stringsAsFactors=FALSE)

library(tidyr)

df %>% spread(.,key=Key,value=Value)

...以及输出:

> df %>% spread(.,key=Key,value=Value)
  name age sex
1    1  20   1
2    2  20   0
3    3  22  NA
4    4  30  NA
5    5  29  NA
6    6   6  NA
> 

有关spread()及其补语gather()的其他背景,请参阅R for Data Science, Chapter 12: Tidy Data