首页 > 解决方案 > R:按名称向我的数据框添加一个新列

问题描述

我有一个具有不同组名(Real.Madrid、Chelsea、Manchester...)的数据集(Y)和每个组的不同值:

   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

我的目标是将第一个数据集附加到数据框中,并匹配团队名称,添加一个包含第一个数据集数值的新列:

    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

我如何合并这些值,将团队名称与“团队”列匹配?

标签: rdataframe

解决方案


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

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)

推荐阅读