R 是否有将具有匹配值的多行合并为一行的函数?
您好,我很难找到下面这种特殊情况的解决方案。 我有这样的数据集,一个显示公共交通数据的数据集。 BSTN和ASTN是公共交通站点的IDR 是否有将具有匹配值的多行合并为一行的函数?,r,R,您好,我很难找到下面这种特殊情况的解决方案。 我有这样的数据集,一个显示公共交通数据的数据集。 BSTN和ASTN是公共交通站点的ID # card_id transaction BSTN ASTN transfer Ttime # 1 1 a b 0 1 # 1 1 b c 1 2 # 2 3
# card_id transaction BSTN ASTN transfer Ttime
# 1 1 a b 0 1
# 1 1 b c 1 2
# 2 3 e f 0 3
# 2 3 g h 1 4
# 2 3 i j 2 5
# 3 1 k l 0 1
# 4 1 m n 0 2
# 4 2 o p 0 3
所以我知道,对于卡id#1,一个人从a旅行到c
我想把这些行合并成一个如下所示的数据表
# card_id transaction BSTN ASTN transfer Ttime
# 1 1 a c 1 3
# 2 3 e j 2 12
# 3 1 k l 0 1
# 4 1 m n 0 2
# 4 2 o p 0 3
问题是对于卡id#2,BSTN和ASTN的第三行和第四行不匹配(f和g),这与卡id#1的情况不同,但不管怎样,如果“事务”列中的值
都是一样的
是否有合适的代码?也许这可以通过使用
dplyr
得到您所需要的。这可能需要根据与其余数据的细微差别进行更多调整
数据
df%
分组依据(卡id,交易)%>%
汇总(BSTN=BSTN[which.min(传输)],
ASTN=ASTN[which.max(传输)],
转移=最大值(转移),
Ttime=总和(Ttime))
#一个tibble:5x6
#组别:卡号[4]
#卡id交易BSTN ASTN传输时间
#
#11AC13
#2 3 e j 2 12
#31KL01
#4 4 1米n 0 2
#5 4 2 o p 0 3
也许这可以通过使用dplyr
获得您所需要的。这可能需要根据与其余数据的细微差别进行更多调整
数据
df%
分组依据(卡id,交易)%>%
汇总(BSTN=BSTN[which.min(传输)],
ASTN=ASTN[which.max(传输)],
转移=最大值(转移),
Ttime=总和(Ttime))
#一个tibble:5x6
#组别:卡号[4]
#卡id交易BSTN ASTN传输时间
#
#11AC13
#2 3 e j 2 12
#31KL01
#4 4 1米n 0 2
#5 4 2 o p 0 3
准确地说,对于每笔交易,您需要最低转账号码(0)的BSTN,然后是最高转账号码的ASTN吗?@Adam yes。对于相同的事务id是的,但我有更多具有不同事务id的数据。我想将具有相同事务ID的数据子集,并将它们组合成一行。可以准确地说,对于每个事务,您需要具有最低传输编号(0)的BSTN,然后是来自最高传输编号的ASTN吗?@Adam yes。对于相同的事务id是的,但我有更多具有不同事务id的数据。我想将具有相同事务ID的数据子集,并将它们合并为一个rothanks!,但是现在我遇到了另一个问题,一些交易ID对于不同的卡ID是重复的,如果我想对具有相同交易ID的卡ID执行此过程,该怎么办。有些交易id是相同的,即使它们是不同的卡id数据…如果您很难理解这个问题,很抱歉Adam。英语不是我的第一语言。我更新了问题。问题是交易ID可能会重复,即使它们是不同的卡ID。因此,我只希望根据卡id(?)合并具有相同事务id的数据,因此不会合并卡id 4,因为它们具有不同的事务id。是的,groupby(card\u id,transaction)
将在这两个上分组。因此,它只会在给定的卡中合并交易。拥有多个“transaction=1”记录在这里不是问题。代码没有返回你想要的吗?现在我明白你的代码了!谢谢,我想我得到了我想要的!感激只需将其添加到摘要行Ttime=sum(Ttime)
。我来编辑。我建议您查看dplyr
上的一些帮助文档。我想这对你会有很大帮助。谢谢!,但是现在我遇到了另一个问题,一些交易ID对于不同的卡ID是重复的,如果我想对具有相同交易ID的卡ID执行此过程,该怎么办。有些交易id是相同的,即使它们是不同的卡id数据…如果您很难理解这个问题,很抱歉Adam。英语不是我的第一语言。我更新了问题。问题是交易ID可能会重复,即使它们是不同的卡ID。因此,我只希望根据卡id(?)合并具有相同事务id的数据,因此不会合并卡id 4,因为它们具有不同的事务id。是的,groupby(card\u id,transaction)
将在这两个上分组。因此,它只会在给定的卡中合并交易。拥有多个“transaction=1”记录在这里不是问题。代码没有返回你想要的吗?现在我明白你的代码了!谢谢,我想我得到了我想要的!感激只需将其添加到摘要行Ttime=sum(Ttime)
。我来编辑。我建议您查看dplyr
上的一些帮助文档。我想这对你会有很大帮助。