R:按名称向我的数据框添加一个新列

R:按名称向我的数据框添加一个新列,r,dataframe,R,Dataframe,我有一个不同组名的组合,皇家马德里,切尔西,曼彻斯特。。。每一个都有一个不同的值: Real.Madrid Chelsea Manchester 420 446 339 PSG Barcelona Ajax 106 191 394 此数据集的类型是下一个: num [1:6(1d)]

我有一个不同组名的组合,皇家马德里,切尔西,曼彻斯特。。。每一个都有一个不同的值:

   Real.Madrid      Chelsea         Manchester 
      420             446              339 
      PSG            Barcelona          Ajax 
      106             191             394 
此数据集的类型是下一个:

num [1:6(1d)] 420 446 339 106 192 ...
- attr(*, "dimnames")=List of 1
..$ : chr [1:6] "Real.Madrid" "Chelsea" "Manchester" "PSG" ...
我还有一个数据帧df1:

    X    Team
1   2    Real.Madrid
2   3    Real Madrid 
3   5    Ajax
4   2    Barcelona
5   1    Manchester
6   3    PSG
7   6    Chelsea
我的目标是将第一个数据集附加到dataframe中,并匹配团队名称,添加一个具有第一个数据集数值的新列:

    X    Team            Y
1   2    Real.Madrid    420
2   3    Real Madrid    420
3   5    Ajax           394
4   2    Barcelona      191
5   1    Manchester     339
6   3    PSG            106
7   6    Chelsea        446
如何合并这些值,将团队名称与列团队匹配?

我们可以将命名向量堆叠到一个两列数据集中,以ind作为列名,以“值”作为第二列,然后使用merge执行左连接all。x=TRUE,以R为底

或使用enframe和right\u连接的tidyverse

-输出

out
#         Team X   Y
#1        Ajax 5 394
#2   Barcelona 2 191
#3     Chelsea 6 446
#4  Manchester 1 339
#5         PSG 3 106
#6 Real.Madrid 2 420
#7 Real.Madrid 3 420
# A tibble: 7 x 3
#  Team            Y     X
#  <chr>       <dbl> <int>
#1 Real.Madrid   420     2
#2 Real.Madrid   420     3
#3 Chelsea       446     6
#4 Manchester    339     1
#5 PSG           106     3
#6 Barcelona     191     2
#7 Ajax          394     5
数据 我们可以将命名向量堆叠到一个两列数据集中,其中ind作为列名,“values”作为第二列,然后使用merge做一个left join all.x=TRUE(以R为底)

或使用enframe和right\u连接的tidyverse

-输出

out
#         Team X   Y
#1        Ajax 5 394
#2   Barcelona 2 191
#3     Chelsea 6 446
#4  Manchester 1 339
#5         PSG 3 106
#6 Real.Madrid 2 420
#7 Real.Madrid 3 420
# A tibble: 7 x 3
#  Team            Y     X
#  <chr>       <dbl> <int>
#1 Real.Madrid   420     2
#2 Real.Madrid   420     3
#3 Chelsea       446     6
#4 Manchester    339     1
#5 PSG           106     3
#6 Barcelona     191     2
#7 Ajax          394     5
数据
我想你可以利用命名向量Y,例如

资料


我想你可以利用命名向量Y,例如

资料


请为您的示例数据发布dput。请为您的示例数据发布dput。您好,当我执行此操作时,将显示dataframe的预览,其中包含Y列。但当我再次打开dataframe时,该列就消失了。这是为什么?@Jusep我猜您没有将上述代码分配给df,例如df Hi,当我执行此操作时,会显示数据帧的预览,其中包含Y列。但当我再次打开dataframe时,该列就消失了。为什么?@Jusep我想你没有把上面的代码分配给df,例如df
df1 <- structure(list(X = c(2L, 3L, 5L, 2L, 1L, 3L, 6L), Team = c("Real.Madrid", 
"Real.Madrid", "Ajax", "Barcelona", "Manchester", "PSG", "Chelsea"
)), class = "data.frame", row.names = c("1", "2", "3", "4", "5", 
"6", "7"))

Y <- c(Real.Madrid = 420, Chelsea = 446, Manchester = 339, PSG = 106, 
Barcelona = 191, Ajax = 394)
df <- within(
  df,
  Y <- Y[Team]
)
  X        Team   Y
1 2 Real.Madrid 420
2 3 Real.Madrid 420
3 5        Ajax 394
4 2   Barcelona 191
5 1  Manchester 339
6 3         PSG 106
7 6     Chelsea 446
> dput(df)
structure(list(X = c(2L, 3L, 5L, 2L, 1L, 3L, 6L), Team = c("Real.Madrid", 
"Real.Madrid", "Ajax", "Barcelona", "Manchester", "PSG", "Chelsea"
)), class = "data.frame", row.names = c("1", "2", "3", "4", "5",
"6", "7"))
> dput(Y)
c(Real.Madrid = 420, Chelsea = 446, Manchester = 339, PSG = 106, 
Barcelona = 191, Ajax = 394)