首页 > 解决方案 > 如何在数据框中创建具有另一个值的列

问题描述

我有这个 df 有 3 列

 > df
ProyectoID                         Nombre Contratado
1    D0000052 D.O.Línea Alta Velocidad Vitor 3606443.81
2    X0000100 AT Conservación Red Foral Bizk 2218057.00
3    D0000062 D.O. Alta velocidad Hernialde- 1545665.21
4    CABL2016 Proyectos y D.O. de Abastecimi 1160413.00
5    X0000120 Bloque proyectos y obras STI 2 1063783.11

和 df2 只有一列:

   > df2
    Años
    1  2007
    2  2008
    3  2009
    4  2010

我想为 df2 的每个值向 df 添加一个新列,所以在这个循环中

for (variable in df2) {
 .....
}

我正在尝试几种选择但不起作用

df$variable=0

或者

df <- df %>% mutate(variable=0)

这会创建我,也就是说,它会创建名称为“变量”而不是值的新列

df
ProyectoID                         Nombre Contratado variable
1    D0000052 D.O.Línea Alta Velocidad Vitor 3606443.81        0
2    X0000100 AT Conservación Red Foral Bizk 2218057.00        0
3    D0000062 D.O. Alta velocidad Hernialde- 1545665.21        0
4    CABL2016 Proyectos y D.O. de Abastecimi 1160413.00        0

我试过这个但有错误

for (indice in 1:nrow(df2)) {
 df$df2[indice,]=0
 df<-df%>%mutate(df2[indice,]=0)
 df<-df%>%mutate(as.character(df2[indice,])=0)
}

请问有什么想法吗?

我需要这样的东西

ProyectoID                         Nombre Contratado 2007 2008 2009 2010 2011 
1    D0000052 D.O.Línea Alta Velocidad Vitor 3606443.81    0    0    0    0    
2    X0000100 AT Conservación Red Foral Bizk 2218057.00    0    0    0    0    

问候

标签: r

解决方案


您可以转换df2$Años为字符并将多列分配给 0。

df[as.character(df2$Años)] <- 0

#  ProyectoID                         Nombre Contratado 2007 2008 2009 2010
#1   D0000052 D.O.Línea Alta Velocidad Vitor    3606444    0    0    0    0
#2   X0000100 AT Conservación Red Foral Bizk    2218057    0    0    0    0
#3   D0000062 D.O. Alta velocidad Hernialde-    1545665    0    0    0    0
#4   CABL2016 Proyectos y D.O. de Abastecimi    1160413    0    0    0    0
#5   X0000120 Bloque proyectos y obras STI 2    1063783    0    0    0    0

推荐阅读