我是编程和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
数据框。任何建议将不胜感激。
答案 0 :(得分: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
参数以执行不同的操作(听起来您可能需要mean
或sum
来满足您的其他需求。)