r - 使用新的和现有的字段将数据从一个数据帧映射到另一个数据帧
问题描述
在 RI 中需要创建一个新的数据帧 (DF3) 并从两个现有数据帧(DF1 和 DF2)映射一些数据。一些映射字段将是全新的,一些映射字段将以相同的名称存在,而一些字段将以不同的名称存在。基本框架是这样的:
D1 = data.frame(
"FieldA" = c("apple","banana","grapes","pear","orange"),
"FieldB" = c(1,2,3,4,5),
"FieldC" = c(5,4,2,3,1),
"FieldD" = c(9,8,7,6,5))
D2 = data.frame(
"FieldA" = c("bread","cereal","milk","oatmeal","smoothie"),
"FieldB" = c(1,2,3,4,5),
"FieldC" = c(5,4,2,3,1),
"FieldX" = c(9,8,7,6,5),
"FieldY" = c(3,4,5,6,7))
D3 = D1[,c("FieldA","FieldB")]
使用上面我可以将 DF1 字段映射到 DF3。但我不知道如何在映射我需要的三个 DF2 字段时引入 DF2 行:
- DF2“FieldA”映射到现有的 DF3“FieldA”
- DF2“FieldX”映射为 DF3 中的新列
- DF2“FieldY”到现有列 DF3“FieldB”
DF3 的结果应该是总共 10 行数据,列字段为“FieldA”、“FieldB”、“FieldX”
解决方案
我不确定这是否是您正在寻找的结果,但是这行代码将所需字段从新D1
的. 通过连接 ( ) 来自原始数据帧的所需值,将这些值复制到新数据帧中。D2
D3
c(...)
D3 = data.frame("FieldA"=c(as.character(D1$FieldA), as.character(D2$FieldA)), "FieldB"=c(D1$FieldB, D2$FieldY), "FieldX"=c(rep(NA, nrow(D1)), D2$FieldX))
输出:
> D3
FieldA FieldB FieldX
1 apple 1 NA
2 banana 2 NA
3 grapes 3 NA
4 pear 4 NA
5 orange 5 NA
6 bread 3 9
7 cereal 4 8
8 milk 5 7
9 oatmeal 6 6
10 smoothie 7 5
as.character
用于,FieldA
因为否则这些值将被视为因子,D3
然后包含一个引用因子水平的数字。有许多不同的方法可以处理这个问题。
我假设FieldX
这就是您在问题中的意思。由于D1
没有该字段,因此它NA
接收D3
.
推荐阅读
- css - 为什么@font-face 在 iOS Safari 中不起作用?
- impala - 如果无效元数据可以做同样的事情,为什么需要在 Impala 中刷新
- c# - 将事件从线程发送到 UI
- javascript - input[type="file"] 判断用户是否没有选择任何文件
- cryptography - 什么是最安全的密钥交换方法
- c# - 在C#中如何在另一个方法执行时锁定方法的执行,没有自锁?
- ios - SwiftUI中ScrollView底部对齐内的VStack
- r - 如何使用 mlogit 模型构建 AIC 模型选择表
- c# - 嵌套版本 6.x 中的 InMemoryConnection Elasticsearch jsonSerializationException
- java - 将 Collections.sort() 与 ArrayList 和 Class 一起使用时出错。(JAVA)