跨行dplyr聚合值
对于下面这样的数据框,需要为每一行跨列聚合(平均值)跨行dplyr聚合值,r,dplyr,R,Dplyr,对于下面这样的数据框,需要为每一行跨列聚合(平均值) > df <- data.frame( id = c(1,2), loc=c("loc1", "loc2"), val1=c(10,20), val2=c(190,NA), val3=c(NA, 10) ) > df id loc val1 val2 val3 1 1 loc1 10 190 NA 2 2 loc2 20 NA 10 如何按行计算val1、val2
> df <- data.frame(
id = c(1,2),
loc=c("loc1", "loc2"),
val1=c(10,20), val2=c(190,NA), val3=c(NA, 10)
)
> df
id loc val1 val2 val3
1 1 loc1 10 190 NA
2 2 loc2 20 NA 10
如何按行计算val1、val2、val3的平均值?所需的输出如下所示
id loc vals_mean
1 1 loc1 100
2 2 loc2 15
你的数据不整齐。首先使用收集
:
library(tidyverse)
df %>%
gather(key = "key", value = "value", val1, val2, val3) %>%
group_by(id, loc) %>%
summarize(mean = mean(value, na.rm = T))
# id loc mean
# <dbl> <fctr> <dbl>
#1 1 loc1 100
#2 2 loc2 15
你的数据不整齐。首先使用收集
:
library(tidyverse)
df %>%
gather(key = "key", value = "value", val1, val2, val3) %>%
group_by(id, loc) %>%
summarize(mean = mean(value, na.rm = T))
# id loc mean
# <dbl> <fctr> <dbl>
#1 1 loc1 100
#2 2 loc2 15
@T-Heron这里有一个例子-你的评论指的是mcve的哪一部分?好的,现在请忽略。@T-Heron,以防你投了反对票?这不是我说的。我总是会立即纠正我的投票错误。@T-Heron这里有一个例子-你的评论指的是mcve
的哪一部分?好的,现在请忽略。@T-Heron,以防万一你投了反对票?这不是我说的。我总是会立即纠正我的投票错误。为什么使用tidyverse
而不是tidyr
?比调用库(tidyr)更简单;库(dplyr)
为什么使用tidyverse
而不是tidyr
?比调用library(tidyr)更简单;库(dplyr)
df %>%
rowwise() %>%
mutate(mean = mean(c(val1, val2, val3), na.rm = TRUE))
## A tibble: 2 × 6
# id loc val1 val2 val3 Mean
# <dbl> <fctr> <dbl> <dbl> <dbl> <dbl>
#1 1 loc1 10 190 NA 100
#2 2 loc2 20 NA 10 15