【发布时间】:2020-08-27 17:39:09
【问题描述】:
我正在尝试将我的数据从长到宽重塑,但在这里我需要创建名称列,例如 event1、event2、event3 等。换句话说,names_from 参数没有自然的候选者。我尝试了几种不同的方法,但无法得到我想要的东西——这是一个可重复的例子。
set.seed(57)
df <- data.frame(date = seq.Date(as.Date("2009-01-01"), as.Date("2009-01-12"), by = 1),
id = rep(1:3, each = 4),
val = rnorm(12)) %>% filter(val > 0.5)
我想将df 转换为df2。
df2 <- data.frame(id = c(1:3),
event1 = c("2009-01-03", "2009-01-06", "2009-01-10"),
event2 = c("2009-01-04", "2009-01-07", "2009-01-11"),
event3 = c(" ", " ", "2009-01-12"))
请注意,此数据集记录了每个 id 的第一次、第二次和第三次(如果有)发生日期。
这是我尝试使用 names_prefix 的方法,但似乎不起作用。
set.seed(57)
df <- data.frame(date = seq.Date(as.Date("2009-01-01"), as.Date("2009-01-12"), by = 1),
id = rep(1:3, each = 4),
val = rnorm(12)) %>% filter(val > 0.5) %>%
pivot_wider(names_prefix = "event", names_from = val, values_from = date)
【问题讨论】:
-
val列发生了什么?你不希望它出现在输出中? -
@alistaire 是的,至少对于这个练习,该列对于过滤步骤是必需的。
-
此问题的重复标记不正确,请删除