簡體   English   中英

在R中具有相似向量的兩列的基礎上對一列項目進行匯總或匯總

[英]Summing or aggregating a column of items based on two columns with similar vectors in R

我需要將兩列中包含相似項目的行匯總在一起。 請問有一個“或”功能可以做到這一點嗎? 我在下面發布了一個樣本數據集:

A1 <- data.frame(Animal1= c("A", "A","B","B","D") ,Animal2=c("B","D","D","A","B"),Frequency=c(2,3,1,4,5))
> A1
  Animal1 Animal2 Frequency
1       A       B         2
2       A       D         3
3       B       D         1
4       B       A         4
5       D       B         5

如何匯總,這樣我就只能得到一個值,將第3行和第5行的頻率組合在一起,其中Animal1是B,Animal2是D在第3行,Animal1是D,Animal2是B在第5行給出頻率,值為6?

這是一個可能的解決方案。 我可能使它復雜化了,但是它應該給您想要的結果。 我要做的第一件事是使字符串成為數據幀中的因素。

A1 <- data.frame(Animal1= c("A", "A","B","B","D"), Animal2=c("B","D","D","A","B"), 
                 Frequency=c(2,3,1,4,5), stringsAsFactors = FALSE) 

A1 %>% 
  mutate(combined = map2_chr(Animal1, Animal2, ~paste0(sort(c(.x, .y)), collapse = ""))) %>%  
  group_by(combined) %>% 
  summarise(total = sum(Frequency))

產量

# A tibble: 3 x 2
  combined total
  <chr>    <dbl>
1 AB           6
2 AD           3
3 BD           6

我不確定我是否理解您的問題,但這是您要找的東西嗎?

library(dplyr)
df %>% as_tibble %>% 
  filter((Animal1 == "B" & Animal2 == "D") | (Animal1 == "D" & Animal2 == "B")) %>% 
  summarise(sum_freq = sum(Frequency))

多謝你們。 除了@StephenK的答案外,我還添加了一個步驟來拆分新的“組合”列。

A1 <- data.frame(Animal1= c("A", "A","B","B","D"), Animal2=c("B","D","D","A","B"), 
             Frequency=c(2,3,1,4,5), stringsAsFactors = FALSE) 

A2<- as.data.frame(A1 %>% mutate(combined = map2_chr(Animal1, Animal2, ~paste0(sort(c(.x, .y)), collapse = ""))) %>%  
group_by(combined) %>% summarise(total = sum(Frequency)))

#create new columns for each letter
A2$Animal1 <- substr(A2$combined, start = 1, stop = 1)
A2$Animal2 <- substr(A2$combined, start = 2, stop = 2)
A2
  combined total Animal1 Animal2
1       AB     6       A       B
2       AD     3       A       D
3       BD     6       B       D

##Select only columns needed and reorder
A3 <- A2[,c("Animal1","Animal2", "total")]
A3
  Animal1 Animal2 total
1       A       B     6
2       A       D     3
3       B       D     6

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM