将列值作为名称并从 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))
我有一个数据框,我想将列的值作为列名,但保持其他列的值不变。有没有一种有效的方法是 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))