将列值作为名称并从 R 中的另一列分配值

Making column values as names and assigning value from another column in R

我有一个数据框,我想将列的值作为列名,但保持其他列的值不变。有没有一种有效的方法是 R?

示例

Answer   Freq   Number   Question   Perc
         7      Q1       A          1.54
Yes      243    Q1       A          53.52
No       204    Q1       A          44.93

我想把这个改成下面的样子

Yes  No  " "  Number   Question   Yes_Perc   No_Perc   ""_Perc  
243  204  7   Q1       A          53.52      44.93     1.54

我尝试使用 reshape2 中的 dcast,但它不起作用。任何帮助都会很棒

使用pivot_wider

tidyr::pivot_wider(df, names_from = Answer, values_from = c(Perc, Freq))

# A tibble: 1 x 8
#  Number Question Perc_ Perc_Yes Perc_No Freq_ Freq_Yes Freq_No
#  <chr>  <chr>    <dbl>    <dbl>   <dbl> <int>    <int>   <int>
#1 Q1     A         1.54     53.5    44.9     7      243     204

以及 dcast 来自 data.table

library(data.table)
dcast(setDT(df), Number + Question ~ Answer, value.var = c('Perc', 'Freq'))

数据

df <- structure(list(Answer = c("", "Yes", "No"), Freq = c(7L, 243L, 
204L), Number = c("Q1", "Q1", "Q1"), Question = c("A", "A", "A"
), Perc = c(1.54, 53.52, 44.93)), class = "data.frame", row.names = c(NA, -3L))