gpt4 book ai didi

r - 使用 ddply 分配组 ID

转载 作者:行者123 更新时间:2023-12-04 10:05:54 26 4
gpt4 key购买 nike

来自 R 新手的非常基本的性能问题。我想通过字段的唯一组合为数据框中的每一行分配一个组 ID。这是我目前的方法:

> # An example data frame
> df <- data.frame(name=c("Anne", "Bob", "Chris", "Dan", "Erin"),
st.num=c("101", "102", "105", "102", "150"),
st.name=c("Main", "Elm", "Park", "Elm", "Main"))
> df
name st.num st.name
1 Anne 101 Main
2 Bob 102 Elm
3 Chris 105 Park
4 Dan 102 Elm
5 Erin 150 Main
>
> # A function to generate a random string
> getString <- function(size=10) return(paste(sample(c(0:9, LETTERS, letters), size, replace=TRUE), collapse=''))
>
> # Assign a random string for each unique street number + street name combination
> df <- ddply(df,
c("st.num", "st.name"),
function(x) transform(x, household=getString()))
> df
name st.num st.name household
1 Anne 101 Main 1EZWm4BQel
2 Bob 102 Elm xNaeuo50NS
3 Dan 102 Elm xNaeuo50NS
4 Chris 105 Park Ju1NZfWlva
5 Erin 150 Main G2gKAMZ1cU

虽然这适用于行数相对较少或组数较少的数据框,但我遇到了具有许多独特组的较大数据集(> 100,000 行)的性能问题。

有什么建议可以提高这项任务的速度吗?可能与 plyr 的实验性 idata.frame() 一起使用?或者我在这一切都错了吗?

在此先感谢您的帮助。

最佳答案

尝试使用 id功能(也在plyr中):

df$id <- id(df[c("st.num", "st.name")], drop = TRUE)

更新:
id自 dplyr 版本 0.5.0 起,函数被认为已弃用。
函数 group_indices提供相同的功能。

关于r - 使用 ddply 分配组 ID,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3273140/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com