gpt4 book ai didi

r - 将多个记录转换为 R 中的单个记录

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

所以,我知道你们中的很多人会认为这个问题已被问过很多次,但我认为没有。本质上,我希望完全扁平化我的数据,这意味着我希望每个人都有一个单个 记录。这是我的数据的可重现示例:

   id      BusinessUnit var1 var2 var3
1 1 Risk & Compliance 8 7 7
2 1 Investments 7 8 7
3 1 Credit Cards 8 9 7
4 2 Investments 9 10 8
5 2 Credit Cards 9 10 8
6 3 Risk & Compliance 9 10 9
7 3 Credit Cards 10 9 10
8 3 Call Center 6 9 10
9 4 Investments 7 6 10
10 4 Call Centers 7 5 9
11 5 Risk & Compliance 10 7 9
12 6 Risk & Compliance 6 8 9
13 6 Credit Cards 5 10 6

我想结束的是这样的:

  id     BusinessUnit1 var1_1 var2_1 var3_1 BusinessUnit2 var1_2 var2_2 var3_2
1 1 Risk & Compliance 8 7 7 Investments 7 8 7
2 2 Investments 9 10 8 Credit Cards 9 10 8
BusinessUnit3 var1_3 var2_3 var3_3
1 Credit Cards 8 9 7
2 <NA> NA NA NA

我已经尝试使用 reshape2 包的 cast() 函数,但它要我聚合我不想做的数据。此外,我不希望每个业务部门都有一个单独的记录,因为这只会让我回到我已经拥有的东西。有没有其他方法可以避免使用 for 循环?

最佳答案

reshapedcast 做得更好。只需先添加一个“时间”变量:

mydf$time <- ave(rep(1, nrow(mydf)), mydf$id, FUN = seq_along)
reshape(mydf, idvar="id", direction = "wide")
# id BusinessUnit.1 var1.1 var2.1 var3.1 BusinessUnit.2 var1.2 var2.2 var3.2
# 1 1 Risk & Compliance 8 7 7 Investments 7 8 7
# 4 2 Investments 9 10 8 Credit Cards 9 10 8
# 6 3 Risk & Compliance 9 10 9 Credit Cards 10 9 10
# 9 4 Investments 7 6 10 Call Centers 7 5 9
# 11 5 Risk & Compliance 10 7 9 <NA> NA NA NA
# 12 6 Risk & Compliance 6 8 9 Credit Cards 5 10 6
# BusinessUnit.3 var1.3 var2.3 var3.3
# 1 Credit Cards 8 9 7
# 4 <NA> NA NA NA
# 6 Call Center 6 9 10
# 9 <NA> NA NA NA
# 11 <NA> NA NA NA
# 12 <NA> NA NA NA

关于r - 将多个记录转换为 R 中的单个记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23250663/

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