r - 如何在R中将一个小的df插入一个更大的df
问题描述
在 R 中:如何将小数据框插入更大的数据框并在必要时同时添加新行?数据框通常应按 ID1、ID2 和 ID3 合并。但是较大的数据框获得了较小数据框的所有行名。
要插入的主要数据框(NA 留空):
ID1 ID2 ID3 r1 r2 r3 r4 r5 r6
A 1 a d1
A 1 b d2
A 2 a d3
小数据框:
ID1 ID2 ID3 r5
A 1 a d4
A 1 b d5
A 2 a d6
A 2 b d7
期望的输出:
ID1 ID2 ID3 r1 r2 r3 r4 r5 r6
A 1 a d1 d4
A 1 b d2 d5
A 2 a d3 d6
A 2 b d7
解决方案
您可以使用 -
nr <- max(nrow(big_df), nrow(small_df))
big_df[1:nr, colnames(small_df)] <- small_df
big_df
# ID1 ID2 ID3 r1 r2 r3 r4 r5 r6
#1 A 1 a NA d1 NA NA d4 NA
#2 A 1 b NA d2 NA NA d5 NA
#3 A 2 a NA d3 NA NA d6 NA
#4 A 2 b NA <NA> NA NA d7 NA
数据
如果您以可重现的格式共享数据,则更容易提供帮助。
big_df <- structure(list(ID1 = c("A", "A", "A"), ID2 = c(1L, 1L, 2L),
ID3 = c("a", "b", "a"), r1 = c(NA, NA, NA), r2 = c("d1", "d2", "d3"), r3 = c(NA,
NA, NA), r4 = c(NA, NA, NA), r5 = c(NA, NA, NA), r6 = c(NA, NA,
NA)), class = "data.frame", row.names = c(NA, -3L))
small_df <- structure(list(ID1 = c("A", "A", "A", "A"), ID2 = c(1L, 1L, 2L,
2L), ID3 = c("a", "b", "a", "b"), r5 = c("d4", "d5", "d6", "d7"
)), class = "data.frame", row.names = c(NA, -4L))
推荐阅读
- powershell - 如何访问 Get-Child Registry 输出的属性
- php - 使用 php/dom/xpath 在父 div 类名之后查找下一个 div 类名?
- python - 通过 Youtube 上传,通过 api 设置为私有(锁定)
- mongodb - 使用QueryDSL(Mongodb)获取从开始日期到结束日期的所有行
- visual-studio - Visual Studio - Xamarin iOS 远程模拟器热重载已正确初始化但无法正常工作
- python - python numpy图像数组:获取水平连接图像的列表并将它们排列在网格中
- css - 没有封装时移动导航栏
- reactjs - 向父组件发送初始值
- javafx - JavaFx:在 TableCell 中处理 ImageView 点击
- python - 带有 tqdm 的 Pandas to_csv 进度条