我正在尝试spread()几个键/值对,但公共值列不会折叠。我认为这可能与先前的处理有关,或更可能是我不知道散布两个或更多键/值对以获得我期望的结果的正确方法。
我从这个数据集开始:
library(tidyverse)
df <- tibble(order = 1:7,
line_1 = c(23,8,21,45,68,31,24),
line_2 = c(63,25,25,24,48,24,63),
line_3 = c(62,12,10,56,67,25,35))
Run Code Online (Sandbox Code Playgroud)
有2个预扩展步骤,用于定义在以下collect()函数中创建的“计数”值的顺序。这是使用行号定义“ count”变量的原始顺序的第一个预扩展步骤:
ntrl <- df %>%
gather(line_1,
line_2,
line_3,
key = "sector",
value = "count") %>%
group_by(order) %>%
mutate(sector_ord = row_number()) %>%
arrange(order,
sector)
Run Code Online (Sandbox Code Playgroud)
这是第二个预扩展步骤,用于定义“ count”变量的数字顺序:
ord <- ntrl %>%
arrange(order,
count) %>%
group_by(order) %>%
mutate(num_ord = paste0("ord_",
row_number(),
sep=""))
Run Code Online (Sandbox Code Playgroud)
最后是我一直在使用的传播代码:
wide <- ord %>%
group_by(order) %>%
spread(key = sector,
value = count) %>%
spread(key = num_ord,
value = sector_ord)
Run Code Online (Sandbox Code Playgroud)
我得到的是:
order line_1 …Run Code Online (Sandbox Code Playgroud) 因此,我已经阅读了许多方法,可以在基础 R 中或通过 tidyverse 方法按名称对月份进行排序,但所有方法都需要用户定义的函数和/或一些非常冗长的语言。
下面是一个例子: 使用 dplyr 中的排列()按时间顺序对月份进行排序
这是几乎所有涉及日期或时间的分析的基本需求。当然,必须有一个函数,例如带有“日历”(也可能是 descd-calendar)参数的排列()。或者我错过了什么?