我有一个如下所示的数据框。我想计算所有数值列的趋势,以及它们是否显著或不每个名称。
library(EnvStats)
dat=structure(list(date = c("1983-12-01", "1984-01-01",
"1984-02-01",
"1984-03-01", "1984-04-01", "1984-05-01"),
rig = c(68.1, 62.4,
67.5, 78.9, 81.7, 72.2), pass = c(9.57, 10.49, 11.97,
11.43, 9.54,
8.98), name = structure(c(1L, 2L, 3L, 4L, 5L, 6L), levels =
c("az", "az", "nc", "nc", "et", "et"), class = "factor")),
row.names = c(NA, 6L), class = "data.frame")
在R中有没有一个函数可以做到这一点?我们可以用途:
kendallTrendTest(rig ~ date)
但是我应该怎样做才能让所有列都有这样的输出呢?
name rig_trend_slope rig_trend_pvalue pass_trend_slope pass_trend_pvalue
az
nc
et
2条答案
按热度按时间ikfrs5lh1#
正如@Quiten提到的,数据中的观察数量是有限的,所以分组方法会返回错误。如果我们想对多列执行此操作,请对
summarise
中的列执行across
循环,从list
输出中提取所需的组件作为tibble,然后使用unnest_wider
创建宽数据集要保存为word格式,我们可以使用
officer
包中的save_as_docx
注:此处
group_by(name)
被注解,因为只有2个观察值,并且在所有情况下都返回错误。对于完整数据集,取消注解group_by(名称)broom::tidy
似乎与kendallTrendTest中的类存在问题y1aodyip2#
首先,每组只有两个值,这是不理想的。要计算每组的趋势,可以使用
dplyr
、group_by
和do
执行测试。还要确保kendallTrendTest
中的x变量是数值。可以使用tidy
获得一些系数。下面是一个可重现的示例: