【问题标题】:Aggregate chosen observations in one data frame and transfer them to another data frame在一个数据帧中聚合选择的观察结果并将它们转移到另一个数据帧
【发布时间】:2014-08-14 18:11:24
【问题描述】:

我是编程和 R 的新手,我试图找到这个问题的答案,但没有成功。我想我需要一些嵌套的 for 循环,但我根本无法解决这个问题。

我有两个数据框。第一个包含客户信息,例如姓名、年龄、地址等。这些客户端都有一个唯一的client.no。 在另一个数据框中,我有关于客户拥有的保险单的信息(大约是 client_info df 的六倍)。在这个数据框中,每一行都有一个唯一的policy.no,并且client.no也被声明了,但是这里显然不止一行有相同的client.no。

client.no <- c(1:10)
num.policy <- 0
client_info <- data.frame(client.no, num.policy)
policy.no <- c(1:100)
set.seed(1)
policy_info <- data.frame(policy.no, client.no = sample(client.no, 100, replace=TRUE))

我想将有关策略的信息与客户信息一起传输到第一个数据帧。如何计算每个客户端的策略数量,然后将此数字传输到客户端信息数据框中的新变量?

我需要的是变量client_info$num_policy 来包含各个客户端拥有的策略数量。我不在乎,这个变量是什么时候生成的(我这里只是举例)

这不是我需要做的唯一任务,例如,我还需要汇总不同保单的价格,然后将其传输到client_info 数据框。任何建议将不胜感激。

【问题讨论】:

    标签: r dataframe


    【解决方案1】:

    使用aggregate 按客户计算保单数量,然后使用merge 将该信息放回您的原始数据框中:

    > merge(client_info, aggregate(policy.no ~ client.no, data = policy_info, FUN=length))
       client.no num.policy policy.no
    1          1          0         7
    2          2          0         6
    3          3          0        11
    4          4          0        14
    5          5          0        14
    6          6          0         5
    7          7          0        11
    8          8          0        15
    9          9          0        11
    10        10          0         6
    

    aggregate 部分甚至可能就是您要查找的内容。您可以更改 FUN 参数以执行不同的操作(听起来您可能需要 meansum 来满足您的其他一些需求)。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-10-14
      • 2018-01-09
      • 2021-01-24
      • 1970-01-01
      • 2021-04-26
      • 1970-01-01
      • 1970-01-01
      • 2022-01-20
      相关资源
      最近更新 更多