我怎么去
df<-data.frame(id=c("A", "B", "B"), res=c("one", "two", "three"))
df
到
df.output<-data.frame(id=c("A", "B"), res1=c("one", "two"), res2=c(NA, "three"))
df.output
用 dplyr
?
我不知道 a priori id
中的重复次数(在这个例子中 B
有 2 次出现),所以resX
输出数据框中的变量必须即时生成。
您只需要创建一个行标识符,您可以使用 dplyr
来完成,然后使用 tidyr::pivot_wider()
生成所有的 resX
变量。
library(dplyr)
library(tidyr)
df %>%
group_by(id) %>%
mutate(
no = row_number()
) %>%
ungroup() %>%
pivot_wider(
id,
names_from = no,
names_prefix = "res",
values_from = res
)
#> # A tibble: 2 × 3
#> id res1 res2
#> <chr> <chr> <chr>
#> 1 A one <NA>
#> 2 B two three