【问题标题】:dplyr median by groupdplyr 中位数(按组)
【发布时间】:2021-12-15 18:13:05
【问题描述】:

我有这个数据框

df1 <- data.frame(
     Type1 = c("A","A","A", "AB", "AB"),
     Type2 = c(1L,2L,2L, 1L, 1L),
     Value = c(1L, 2L, 1L, NA, NA), , Median = c(1L, 1.5, 1.5, NA, NA))

我想通过 Type1 和 Type2 将新列中的中位数转换为新变量“AB”而不汇总,以便在现有列中获得新值。

 df12 <- data.frame(
    Type1 = c("A","A","A", "AB", "AB"),
    Type2 = c(1L,2L,2L, 1L, 1L),
    Value = c(1L, 2L, 1L, NA, NA), Median = c(1L, 1.5, 1.5, 1L, 1L))

我的尝试

df1 %>% group_by(Type1, Type2) %>% mutate(Median = ifelse(Type1 == "AB" & Type2 == 1, median(Value), Median))

【问题讨论】:

    标签: r if-statement dplyr


    【解决方案1】:

    我们可能需要去掉这里的分组

    library(dplyr)
    df1 %>%
        mutate(Median = replace(Median, Type1 %in% 'AB' & Type2 %in% 1, 
            median(Value, na.rm = TRUE)) )
    

    【讨论】:

    • 谢谢,但是有没有办法添加条件Type1 == "AB" & Type2 == 1?在我的实际数据框中是 Type1 和 Type2 的 5 倍
    • @onhalu 我更新了。那也行。我使用了is.na,因为它只是一个表达式
    • 好吧,这行得通。谢谢
    猜你喜欢
    • 1970-01-01
    • 2018-04-06
    • 2014-05-11
    • 2017-07-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多