当R中的列值相同时,如何合并数据框中的行

时间:2019-04-25 16:27:41

标签: r

我从同一单元获得了许多观察结果,因此我需要合并行。像这样的数据框

  data.frame(
  fir =c("001","006","001", "006", "062"),
  sec = c(10,5,6,7,8),
  thd = c(45,67,84,54,23))

fir sec thd
001  10  45
006  5   67
001  6   84
006  7   54
062  8   23

第一列具有3位数字,代表一个单位。我需要将这些行加在一起以获得每个单元的总数。其他列是需要加在一起的数值。因此数据框看起来像

 fir sec thd
001  16  129
006  12  121
062  8   23

我需要它为第一列中的任何唯一数字工作。 有任何想法吗?谢谢您的帮助!

2 个答案:

答案 0 :(得分:0)

欢迎这是按操作分组的经典案例,在这种情况下,我们希望将sec和thd列的总和进行逻辑分组。

library(tidyverse)

df <- data.frame(
  fir =c("001","006","001", "006", "062"),
  sec = c(10,5,6,7,8),
  thd = c(45,67,84,54,23))

df %>%
  group_by(fir) %>% 
  summarise(sec_sum = sum(sec),
            thd_sum = sum(thd))

答案 1 :(得分:0)

我们可以按“和”进行分组

library(dplyr)
df1 %>% 
  group_by(fir) %>% 
  summarise_all(sum) 
# A tibble: 3 x 3
#  fir     sec   thd
#  <fct> <dbl> <dbl>
#1 001      16   129
#2 006      12   121
#3 062       8    23

或者使用aggregate中的base R

aggregate(. ~ fir, df1, sum)

数据

df1 <- data.frame(
  fir =c("001","006","001", "006", "062"),
  sec = c(10,5,6,7,8),
  thd = c(45,67,84,54,23))