R-根据与第二个列表混合的条件从列中获取值的总和
当我尝试对两个列表执行操作时,我收到一条错误消息,并且计算无法正常工作。(请参阅问题末尾) 清单2 解决方案R-根据与第二个列表混合的条件从列中获取值的总和,r,dplyr,R,Dplyr,当我尝试对两个列表执行操作时,我收到一条错误消息,并且计算无法正常工作。(请参阅问题末尾) 清单2 解决方案 id ... sum_of_parts count 1 ... 2 1 3 ... 9 3 4 ... 10 2 88 ... 6 1 99 ... 11 1 但是,由于我的列表
id ... sum_of_parts count
1 ... 2 1
3 ... 9 3
4 ... 10 2
88 ... 6 1
99 ... 11 1
但是,由于我的列表2比列表1小得多,我确实会出现以下错误(还有一些错误,但它们看起来几乎相同):
在list1$idmutate
按组操作,我相信,如果您没有指定组,它将尝试在向量化操作中使用整个列(通常效率更高),从而避免不同长度的错误
如果要对每一行进行操作,可以使用rowwise()
,使以下计算将每一行视为一个组。因此,id
将是mutate
调用中的长度为1的向量
注意:我们需要在分组之前指定滞后,否则使用上述逻辑,在长度为1的向量中将没有先前的id
。
库(dplyr)
列表1%
行()
变异(部分的总和=总和(列表1$part[(列表1$id lag\u id)]),
计数=长度(list1$part[(list1$id lag\U id)])%>%
选择(-lag_id)
#>来源:本地数据帧[5 x 3]
#>小组:
#>
#>#tibble:5 x 3
#>零件计数的id和
#>
#> 1 1 2 1
#> 2 3 7 2
#> 3 4 6 1
#> 4 88 0 0
#> 5 99 11 1
您可以使用rowwise
而不是显式地指定组(键),然后根据它进行分组。这是一个好主意,更具可读性和简洁性。这将节省我以后不必要的输入:)可以使用list2$id lag(list2$id)进行计数猜测。谢谢你的回答。它起作用了,它救了我:))
id Part ...
1 2
2 3
3 4
4 6
99 11
100 11
191 11
222 11
333 11
id ...
1
3
4
88
99
id ... sum_of_parts count
1 ... 2 1
3 ... 9 3
4 ... 10 2
88 ... 6 1
99 ... 11 1