如何将列级别值转换为R中的单个行?

时间:2016-08-14 10:39:52

标签: r

我有一个类似于下面的数据框,

Name   | ID             |  SET  | COUNT  |
------ | ------         |------ | ------ |
Value  | 44000001005    | 0     | 24     |
Value  | 10000000019659 | 0     | 29     |
Value  | 10000000019659 | 1     | 5      |

我需要的结果是,

Name   | ID             |  0    | 1      |
------ | ------         |------ | ------ |
Value  | 44000001005    | 24    | 0      |
Value  | 10000000019659 | 29    | 5      |

可以这样做还是我必须重新处理数据集? 我对R来说比较新,所以我可能错过了一些非常明显的逻辑,但如果有人能指导我,我会很感激。 谢谢。

1 个答案:

答案 0 :(得分:1)

如果要将格式从长格式更改为宽格式,可以使用tidyr软件包中的spread函数。还有其他套餐和可能性,但这是我最喜欢的。

如果您是R新手,请注意必须先使用install.packages(" tidyr")安装软件包。

Name <- c("Value","Value","Value")
ID <- c(6546465445,5464564,5464564)
SET <- c(0,0,1)
COUNT <- c(24,29,5)

df <- cbind.data.frame(Name,ID,SET,COUNT,stringsAsFactors=FALSE)

library(tidyr)

spread(data=df,key=SET,value = COUNT,fill=0) -> df_wide

请参阅文档?spread以获取有关该功能的详细信息。