簡體   English   中英

如何使用 dplyr 在行組之間進行划分

[英]How to divide between groups of rows using dplyr

我有類似的數據,我想要這個鏈接所述的確切結果: 如何使用 dplyr 在行組之間划分?

但是,與我的數據唯一不同的是,有時“條件”列始終沒有“A”或“B”,因此有時沒有分母或分子。

x <- data.frame(
    name = rep(letters[1:4], each = 2),
    condition = rep(c("A", "B"), times = 4),
    value = c(2,10,4,20,8,40,20,100)
) 
x = x[-c(4,5),] #this is my dataframe

我想刪除並不總是同時具有 A 和 B 的行並繼續除法。 誰能根據這段代碼告訴我如何做到這一點?

x %>% 
  group_by(name) %>%
  summarise(value = value[condition == "B"] / value[condition == "A"])

您可以刪除沒有“A”或“B”的組,然后划分。

library(dplyr)

x %>%
  group_by(name) %>%
  filter(all(c('A', 'B') %in% condition)) %>%
  summarise(value = value[condition == "B"] / value[condition == "A"])

#  name  value
#  <fct> <dbl>
#1 a         5
#2 d         5

我們可以使用data.table

library(data.table)
setDT(x)[all(c('A', 'B') %chin% condition), 
    .(value = value[condition == 'B']/value[condition == 'A']), name]

暫無
暫無

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

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