如何根据R中第二列的值将数据帧的一列拆分为两个不同的列?

如何根据R中第二列的值将数据帧的一列拆分为两个不同的列?,r,dataframe,R,Dataframe,我有一个包含三列的数据框:一列包含ID,一列包含颜色ID,另一列包含颜色。每个Id与两个颜色Id和颜色相关联。我要做的是将颜色列拆分为两个不同的列,color.1和color.2,其中color.1包含与颜色ID“a”关联的所有颜色,color.2包含与颜色ID“b”关联的所有颜色。以下代码举例说明了我的输入和所需的输出: # Building input dataframe. df.input <- data.frame(id = c(1, 1, 2, 2, 3, 3),

我有一个包含三列的数据框:一列包含ID,一列包含颜色ID,另一列包含颜色。每个Id与两个颜色Id和颜色相关联。我要做的是将颜色列拆分为两个不同的列,color.1和color.2,其中color.1包含与颜色ID“a”关联的所有颜色,color.2包含与颜色ID“b”关联的所有颜色。以下代码举例说明了我的输入和所需的输出:

# Building input dataframe.
df.input <- data.frame(id = c(1, 1, 2, 2, 3, 3),
                       color.id = c("a", "b", "a", "b", "a", "b"),
                       color = c("red", "orange", "green", "blue", "yellow", "purple"))

# Visualizing input dataframe.
df.input

# Building desired output dataframe.
df.output <- data.frame(id = c(1, 2, 3),
                        color.1 = c("red", "green", "yellow"),
                        color.2 = c("orange", "blue", "purple"))

# Visualizing desired output dataframe.
df.output
#构建输入数据帧。

df.input使用
排列

library(tidyr)
df.input %>% spread(color.id, color)

  id      a      b
1  1    red orange
2  2  green   blue
3  3 yellow purple

在base R中,使用
重塑
,使用
重塑(df.input,direction=“wide”,idvar=“id”,timevar=“color.id”)