我有一个小问题,我希望我能得到一些帮助......
我的数据框有一个 personID 和 houseID(以及两者之间的距离),尽管一个人可能匹配多个房子。我想重塑我的数据,以便每人只有一个观察值和 houseID 的多个列。我阅读了有关 melt 和 cast(或 dcast)的信息,并且对如何使用它们非常熟悉,但不确定如何创建一个指标来区分与给定选民相关的第一所房子和第二所房子。
这是我的数据集目前的样子:
personID schoolID distance
10007347 87-Intl Pre-School 171
10051332 1-Masaryk Towers 153
10066650 74-East Midtown Plaze 193
10066650 75-East Midtown Plaze 106
10066650 76-East Midtown Plaze 195
10078124 87-Intl Pre-School 158
这就是我希望我的数据集在融化之前的样子:
personID schoolID distance time
10007347 87-Intl Pre-School 171 1
10051332 1-Masaryk Towers 153 1
10066650 74-East Midtown Plaze 193 1
10066650 75-East Midtown Plaze 106 2
10066650 76-East Midtown Plaze 195 3
10078124 87-Intl Pre-School 158 1
换句话说,我想在 personID 级别上排名。我以为我可能缺少一个 R 函数,但还没有运气。我的 hack 解决方案是首先将所有观察的时间设置为 1,找到 personID 的所有重复项,将这些重复观察的时间设置为 2,找到 personID 和时间的所有重复项,将这些重复项的时间设置为 3,等等. 虽然这不会很好地扩展。
对较小的数据集使用我糟糕的解决方案,我使用 reshape 包进行了 melt() 然后 cast() 看起来像这样:
personID houseID_1 houseID_2 houseID_3
10007346 87-Intl Pre-School <NA> <NA>
10051331 1-Masaryk Towers <NA> <NA>
10066659 74-East Midtown Plaze 75-East Midtown Plaze 76-East Midtown Plaze
10078123 87-Intl Pre-School <NA> <NA>
10089347 87-Intl Pre-School <NA> <NA>
10100173 79-Waterside Plaza <NA> <NA>
我也有 distance_1、distance_2、distance_3,但我将其省略,以便更容易查看我的数据。
如果有人可以帮助如何创建时间变量,将不胜感激!
谢谢!