首页 > 解决方案 > 将数据框复制到另一个匹配的行号

问题描述

我有一个如下所示的数据框 A。请注意,第一列是随机顺序的行名。

   ID
5  10
3  10
1  10

他们。我有另一个 5 * 1 数据框 B 和 NA。我正在尝试将 A 复制到与 A 中的列名匹配的 B。我想获得如下所示的数据框。

   ID
1  10
2  NA
3  10
4  NA
5  10

标签: r

解决方案


您正在尝试做的事情有潜在的危险。如果您 100% 确定行包含将在 2 个数据帧之间匹配的标识符,则代码如下。

library(tidyverse)

# Generate a data frame that looks like yours (you don't need this)
df <- data.frame(ID=c(10, NA, 10, NA, 10))

# Assign row names to a new column on the df
df$names <- row.names(df)
# Here's how your data will look like
df<-df[complete.cases(df),]

# Make a second df
df2 <- data.frame(names=as.character(1:20))
# Join by names (what are other possible columns to join by ?)
left_join(df2, df, by="names")

这将产生

   names ID
1      1 10
2      2 NA
3      3 10
4      4 NA
5      5 10
6      6 NA
7      7 NA
8      8 NA
9      9 NA
10    10 NA
11    11 NA
12    12 NA
13    13 NA
14    14 NA
15    15 NA
16    16 NA
17    17 NA
18    18 NA
19    19 NA
20    20 NA

推荐阅读