gpt4 book ai didi

r - 返回唯一组合的ID

转载 作者:行者123 更新时间:2023-12-04 13:15:31 25 4
gpt4 key购买 nike

我的数据表具有以下格式

ID   Var1   Var2   Var3   ...
1_1 0 0 1 ...
1_2 1 1 0 ...
1_3 0 0 1 ...
... ... ... ... ...

我想从唯一组合( Var列)中提取ID。获取唯一组合不是问题( plyr::count()aggregate()等),我想提取有助于这些唯一组合的 id变量。

输出应该看起来像这样
Var1   Var2   Var3   IDs
0 0 1 1_1, 1_3
1 1 0 1_2

其中 IDs列是构成唯一组合的所有ID的向量/列表。

我尝试了 R packagedplyr管道,到目前为止没有任何效果。

有什么建议甚至R包如何处理此任务?

谢谢!

最佳答案

df %>% group_by_at(.vars=-1) %>% summarize(IDs=list(ID))

与Sotos的解决方案类似,但假设所有其他列都必须是唯一的,并且简化了ID列的选择,并且IDs列将是列表的列而不是字符串。
# A tibble: 2 x 4
# Groups: Var1, Var2 [2]
Var1 Var2 Var3 IDs
<int> <int> <int> <list>
1 0 0 1 <chr [2]>
2 1 1 0 <chr [1]>

只是为了好玩,您可以使用 tidyrnest函数进一步简化它:
require(tidyr)
nest(df,IDs=ID)
# A tibble: 2 x 4
Var1 Var2 Var3 IDs
<int> <int> <int> <S3: vctrs_list_of>
1 0 0 1 1_1, 1_3
2 1 1 0 1_2

这仍然将ID保留为列表,这可能对您有用或对您没有帮助,但在标题中更清楚地显示了它。将列保留为列表而不是字符串的另一个好处是,您可以使用 unnest轻松地重新创建原始表:
unnest(nest(dd,IDs=ID),cols=IDs)
# A tibble: 3 x 4
Var1 Var2 Var3 ID
<int> <int> <int> <chr>
1 0 0 1 1_1
2 0 0 1 1_3
3 1 1 0 1_2

关于r - 返回唯一组合的ID,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58608323/

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