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)