Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/69.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/solr/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R 是否有将具有匹配值的多行合并为一行的函数?_R - Fatal编程技术网

R 是否有将具有匹配值的多行合并为一行的函数?

R 是否有将具有匹配值的多行合并为一行的函数?,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

您好,我很难找到下面这种特殊情况的解决方案。 我有这样的数据集,一个显示公共交通数据的数据集。 BSTN和ASTN是公共交通站点的ID

#   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
上的一些帮助文档。我想这对你会有很大帮助。