在R中:如何将因子转换为列并使用其他列中的相应值填充这些列?

use*_*614 -2 r reshape dataframe

我有一个像这样组织的data.frame:

   id question input
1  11        1     6
2  12        1     7
3  13        1     5
4  14        2     5
5  15        2     6
6  16        3     4
7  17        4     5
8  18        4     5
9  19        4     4
10 20        5     3
Run Code Online (Sandbox Code Playgroud)

我需要将"问题"列变成一系列列(一个用于问题1,一个用于问题2,等等),这没关系 - 我已经在网上找到了答案.

但是,我还需要使用'input'中的相应值填充这些新列,因此生成的data.frame如下所示:

   id question input q1 q2 q3 q4 q5
1  11        1     6  6 NA NA NA NA
2  12        1     7  7 NA NA NA NA
3  13        1     5  5 NA NA NA NA
4  14        2     5 NA  5 NA NA NA
5  15        2     6 NA  6 NA NA NA
6  16        3     4 NA NA  4 NA NA
7  17        4     5 NA NA NA  5 NA
8  18        4     5 NA NA NA  5 NA
9  19        4     4 NA NA NA  4 NA
10 30        5     3 NA NA NA NA  3
Run Code Online (Sandbox Code Playgroud)

从开始到结束,我将如何重塑这样的数据?我还是一个非常初学者,非常感谢任何帮助!

A5C*_*2T1 5

您可以使用dcast"reshape2"包,如下所示:

dcast(mydf, id + question + input ~ question, value.var = "input")
#    id question input  1  2  3  4  5
# 1  11        1     6  6 NA NA NA NA
# 2  12        1     7  7 NA NA NA NA
# 3  13        1     5  5 NA NA NA NA
# 4  14        2     5 NA  5 NA NA NA
# 5  15        2     6 NA  6 NA NA NA
# 6  16        3     4 NA NA  4 NA NA
# 7  17        4     5 NA NA NA  5 NA
# 8  18        4     5 NA NA NA  5 NA
# 9  19        4     4 NA NA NA  4 NA
# 10 20        5     3 NA NA NA NA  3
Run Code Online (Sandbox Code Playgroud)