[英]How to summarise across different types of variables with dplyr::c_across()
[英]Understanding rowwise() and c_across()
你好:誰能提供一個外行的解釋,為什么這兩種嘗試計算行平均值的方法不同? 謝謝。
library(tidyverse)
var1<-rnorm(100)
var2<-rnorm(100)
var3<-rnorm(100)
df<-data.frame(var1, var2, var3)
#ADD IN A MISSING VALUE
df[1,1]<-NA
#I thought this would work
df %>%
select(starts_with('var')) %>%
rowwise() %>%
mutate(avg=mean(., na.rm=T))
#This does work but I don't understand why
df %>%
rowwise() %>%
mutate(avg=
mean(
c_across(starts_with('var')), na.rm=T)
)
.
代表整個數據集而不是分組數據。mean
不適用於數據幀。 (見mean(mtcars)
) 由於dplyr
1.0.0(或更高版本),您可以使用cur_data()
獲取組中的數據,但要使用它mean
您需要將其更改為 vector ,這可以使用unlist
或as.matrix
。 所以嘗試:
library(dplyr)
df %>%
select(starts_with('var')) %>%
rowwise() %>%
mutate(avg=mean(unlist(cur_data()), na.rm=T))
但是,您的第二種方法是使用rowwise
的正確方法。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.