[英]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.