我正在尝试将此表达式重写为magrittr的管道运算符:
print(mean(pull(df,height),na.rm = TRUE))
为我的数据集返回175.4。
我知道我必须从数据帧开始,然后将其写为> df%>%,但是我对如何由内而外地写入感到困惑。例如,na.rm = TRUE是否应该放在mean(),pull()或print()中?
更新:我实际上是通过反复试验弄清楚的...
>df%>%
+pull(height)%>%
+mean(na.rm=TRUE)
+print()
returns 175.4
答案 0 :(得分:0)
使用这样的伪数据制作一个可重现的示例是一个很好的做法:
height <- seq(1:30)
weight <- seq(1:30)
df <- data.frame(height, weight)
这些管道操作员可以使用大多数tidyverse(不仅仅是magrittr)。您要尝试做的实际上是来自dplyr。许多汇总变量(例如均值,标准差)以及用于收集特定数据点(例如最小值,最大值等)的某些函数都需要na.rm = T。这些函数在NA值上不能很好地发挥作用。
df %>% pull(height) %>% mean(na.rm=T) %>% print()
除非您的数据是嵌套的,否则您甚至不需要使用pull
df %>% summarise(mean = mean(height,na.rm=T))
此外,使用摘要,您可以将它们通过管道传递到另一个数据框中,而不仅仅是打印,并在需要时从数据框中调用它们。
df %>% summarise(meanHt = mean(height,na.rm=T), sdHt = sd(height,na.rm=T)) -> summary
summary[1]
summary[2]