【问题标题】:How to easily reshape data in R to collect distribution of values by key [duplicate]如何轻松地重塑 R 中的数据以通过键收集值的分布 [重复]
【发布时间】:2017-12-21 03:02:07
【问题描述】:

假设我有这个数据框:

> df = structure(list(one = structure(c(1L, 1L, 1L, 2L, 2L, 2L), .Label = c("A", "B"),class = "factor"), two = 1:6),.Names = c("one", "two"),row.names = c(NA, -6L),class = "data.frame")

> df

  one two
1   A   1
2   A   2
3   A   3
4   B   4
5   B   5
6   B   6

想把它改造成这样:

A  B
1  4
2  5
3  6

您可以假设“一”列中每个唯一元素的行数相同。

我可以这样做:

library(tidyr)
df = cbind(df,index=c(1:3,1:3))
spread(df,key = one,value= two)[,-1]

但是,这感觉有点像 hack,因为它使用数据重塑函数,假设结果行是观察结果,并且每行的值都有某种关系。在这个解决方案中,我通过添加允许以我想要的方式进行重塑的索引来弥补这种关系。然后需要我删除该附加信息。感觉不干净。

所以我的问题是,是否有一种功能或简单的单线可以更直接地完成我想要的操作?

【问题讨论】:

    标签: r reshape tidyr


    【解决方案1】:

    我们可以使用unstack

    unstack(df, two~one)
    #  A B
    #1 1 4
    #2 2 5
    #3 3 6
    

    【讨论】:

    • 很好!...对于刚刚投反对票的人来说,这有什么问题?
    • 不错的解决方案..
    猜你喜欢
    • 2014-04-01
    • 2019-03-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-06-21
    • 1970-01-01
    • 1970-01-01
    • 2014-07-13
    相关资源
    最近更新 更多