gpt4 book ai didi

R-将数据框转换为两个数据透视表

转载 作者:行者123 更新时间:2023-12-04 07:28:26 34 4
gpt4 key购买 nike

我有一个 800K 行的数据框,看起来像这样;

    v2 | v1 |  probs     | v1_name       | v2_name
--------------------------------------------------------
1 | 1 | 0 | 0.04417671 | type_id | subtype_id
2 | 2 | 0 | 0.05752212 | risk_level_id | subtype_id
3 | 3 | 0 | 0.04411765 | type_id | gender
4 | 4 | 0 | 0.02510460 | legual_size | risk_level_id
5 | 5 | 0 | 0.07296137 | type_id | sector_id
6 | 6 | 0 | 0.04743083 | risk_level_id | type_id
v1_name 和 v2_name 都有唯一的 18 个值。我的意图是形成两个列表。一个存储关系,另一个存储权重。我尝试过 dplyr groupby、summary 等,但迷路了。
graph <- list(type_id_0 = c("subtype_id_1", "gender_3","sector_id_5"),
risk_level_id_0 = c("subtype_id_2", "type_id_6"),
legual_size_0 = c("risk_level_id_4"))


weights <- list(type_id_0 = c(0.04417671, 0.04411765,0.07296137),
risk_level_id_0 = c(0.05752212,0.04743083),
legual_size_0 = c(0.02510460))

我正在使用 R 版本 3.3.3 并且我坚持使用这个版本,因为项目需要它。
任何想法和帮助都会很棒。

最佳答案

通过粘贴 v1_names 和 v1 创建向量,并使用此向量过滤数据框。然后为 v1_names 和 v1 的每个组合创建一个循环。

cmb <- with(df, paste(v1_name, v1, sep = "_"))

ls1 <- list()
for (i in unique(with(df, paste(v1_name, v1, sep = "_")))) {
ls1[[i]] <- with(df[cmb == i,], paste(v2_name, v2, sep = "_"))
}

ls2 <- list()
for (i in unique(with(df, paste(v1_name, v1, sep = "_")))) {
ls2[[i]] <- df[cmb == i, ]$probs
}
list 1:
ls1
$type_id_0
[1] "subtype_id_1" "gender_3" "sector_id_5"

$risk_level_id_0
[1] "subtype_id_2" "type_id_6"

$legual_size_0
[1] "risk_level_id_4"
list 2:
ls2
$type_id_0
[1] 0.04417671 0.04411765 0.07296137

$risk_level_id_0
[1] 0.05752212 0.04743083

$legual_size_0
[1] 0.0251046

关于R-将数据框转换为两个数据透视表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68099554/

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