繁体   English   中英

使用 mutate 和 colnames 的逐行汇总统计信息(使用 dplyr)

[英]Row-wise summary statistics using mutate and colnames (using dplyr)

我想在 R 中执行逐行汇总统计。

我尝试调整此解决方案( https://stackoverflow.com/a/68443762/3251466 )以使用均值,但得到了奇怪的结果。

df1 <- tibble(foo = c(1,5,2), bar = c(10,1,3), foobar = c(6,3,5))
df1 %>% rowwise() %>% mutate(s = sum(!!!syms(colnames(.)))) #works
df1 %>% rowwise() %>% mutate(m = mean(!!!syms(colnames(.)))) #just returns foo
df1 %>% rowwise() %>% mutate(sd = sd(!!!syms(colnames(.)))) #fails

# Attempting with an NA
df2 <- tibble(foo = c(1,5,2), bar = c(10,NA,3), foobar = c(6,3,5))
df2 %>% rowwise() %>% mutate(s = sum(!!!syms(colnames(.)), na.rm=T)) #works
df2 %>% rowwise() %>% mutate(m = mean(!!!syms(colnames(.)), na.rm=T)) #this time mean fails

知道为什么这会失败吗?

我认为 apply 和 rowMeans 之类的东西会起作用(我还没有研究这些)。

不过,我希望有一种比 rowMeans 更通用的方法,以便我可以执行其他逐行分析,并且很好奇是否有更整洁的替代方法可以应用。

谢谢!

您可以采用的执行逐行操作的通用方法是通过c_across

df1 |> rowwise() %>% mutate(s=sum(c_across()))
df1 |> rowwise() %>% mutate(m=mean(c_across()))
df1 |> rowwise() %>% mutate(sd=sd(c_across()))

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM