Python/R:如果两列在多行中具有相同的值,则将第三列中的值相加,并对第四、第五和第六列求平均值

Python/R:如果两列在多行中具有相同的值,则将第三列中的值相加,并对第四、第五和第六列求平均值,python,r,sorting,dataframe,findandmodify,Python,R,Sorting,Dataframe,Findandmodify,输入: 0 77 1 2 3 5 0 78 2 4 6 1 0 78 1 2 3 5 3 79 0 4 5 2 3 79 6 8 2 1 3 79 1 2 3 1 输出:(为相同行添加第三列值,并取第四、第五和第六列中所有值的平均值) 我们可以在R中使用dplyr。我们按照前两列进行分组,将第三列(“V3”)变异为该列的总和,并使用总结每列的得到第3:6列的平均值 library(dplyr) res <- df1 %>% group_by(V1, V2) %&g

输入:

0 77 1 2 3 5
0 78 2 4 6 1
0 78 1 2 3 5
3 79 0 4 5 2
3 79 6 8 2 1
3 79 1 2 3 1
输出:(为相同行添加第三列值,并取第四、第五和第六列中所有值的平均值)


我们可以在
R
中使用
dplyr
。我们按照前两列进行分组,
将第三列(“V3”)变异为该列的
总和,并使用
总结每列的
得到第3:6列的
平均值

library(dplyr)
res <- df1 %>%
         group_by(V1, V2) %>% 
         mutate(V3=sum(V3))  %>% 
         summarise_each(funs(round(mean(.),1)), V3:V6)
as.data.frame(res)
#  V1 V2 V3  V4  V5  V6
#1  0 77  1 2.0 3.0 5.0
#2  0 78  3 3.0 4.5 3.0
#3  3 79  7 4.7 3.3 1.3
库(dplyr)
res%
分组依据(V1,V2)%>%
突变(V3=总和(V3))%>%
总结每个(funs(四舍五入(平均值),1)),V3:V6)
as.data.frame(res)
#V1 V2 V3 V4 V5 V6
#1  0 77  1 2.0 3.0 5.0
#2  0 78  3 3.0 4.5 3.0
#3  3 79  7 4.7 3.3 1.3
数据
df1我们可以在
R
中使用
dplyr
。我们按照前两列进行分组,
将第三列(“V3”)变异为该列的
总和,并使用
总结每列的
得到第3:6列的
平均值

library(dplyr)
res <- df1 %>%
         group_by(V1, V2) %>% 
         mutate(V3=sum(V3))  %>% 
         summarise_each(funs(round(mean(.),1)), V3:V6)
as.data.frame(res)
#  V1 V2 V3  V4  V5  V6
#1  0 77  1 2.0 3.0 5.0
#2  0 78  3 3.0 4.5 3.0
#3  3 79  7 4.7 3.3 1.3
库(dplyr)
res%
分组依据(V1,V2)%>%
突变(V3=总和(V3))%>%
总结每个(funs(四舍五入(平均值),1)),V3:V6)
as.data.frame(res)
#V1 V2 V3 V4 V5 V6
#1  0 77  1 2.0 3.0 5.0
#2  0 78  3 3.0 4.5 3.0
#3  3 79  7 4.7 3.3 1.3
数据
df1问题是什么?问题是什么?非常感谢!这对我来说很有效,虽然我不知道为什么我的问题会被收到(-1)…我不能投票,因为我没有足够的声誉这么做,但再次感谢。非常感谢!这对我来说很有效,虽然我不知道为什么我的问题会被接受(-1)…我不能投票,因为我没有足够的声誉这么做,但再次感谢。
df1 <- structure(list(V1 = c(0L, 0L, 0L, 3L, 3L, 3L), V2 = c(77L, 78L, 
78L, 79L, 79L, 79L), V3 = c(1L, 2L, 1L, 0L, 6L, 1L), V4 = c(2L, 
4L, 2L, 4L, 8L, 2L), V5 = c(3L, 6L, 3L, 5L, 2L, 3L), V6 = c(5L, 
1L, 5L, 2L, 1L, 1L)), .Names = c("V1", "V2", "V3", "V4", "V5", 
"V6"), class = "data.frame", row.names = c(NA, -6L))