r - 当有多个“键”时如何合并数据集
问题描述
我正在尝试将两个数据集合并到R
. 作为参考,键是一个雇员ID number
。在第一个数据集中,A
键是唯一的,每个变量对应于ID number
。在下一个数据集中,我们有相同的ID number
,但是数据是指某人被提升的次数。因此,ID number
对于每个单独的移动重复多次。我想将两者合并,这样我就只有一个ID number
,其中包含有关每个动作的信息。
我是新手,我已经尝试过包中的join
功能,tidy verse
我正在尝试找到一种在重复密钥时加入的方法。
Example of the datasets
[A]
ID "Status"
1. Y
2. N
3. Y
4. N
5. Y
[B]
ID "Movement"
1 AB
1 BC
2. AB
3. AA
3. AB
3. BC
4. AA
5. AB
5. BA
我希望它最终看起来像这样
ID "STATUS". "Movement 1" "Movement 2" Movement 3" .....
1 Y AB BC NA
2 N AB NA NA
3 Y AA AB BC
4 N AA NA NA
5 Y AB BA NA
谢谢你的支持!
解决方案
一个选项是通过“ID”连接两个数据集,然后spread
在创建按“ID”分组的序列列后将其转换为“宽”格式
library(tidyverse)
left_join(df2, df1) %>%
group_by(ID) %>%
mutate(col = str_c("Movement", row_number())) %>%
spread(col, Movement)
# A tibble: 5 x 5
# Groups: ID [5]
# ID Status Movement1 Movement2 Movement3
# <dbl> <chr> <chr> <chr> <chr>
#1 1 Y AB BC <NA>
#2 2 N AB <NA> <NA>
#3 3 Y AA AB BC
#4 4 N AA <NA> <NA>
#5 5 Y AB BA <NA>
数据
df <- structure(list(ID = c(1, 2, 3, 4, 5), Status = c("Y", "N", "Y",
"N", "Y")), class = "data.frame", row.names = c(NA, -5L))
df2 <- structure(list(ID = c(1, 1, 2, 3, 3, 3, 4, 5, 5), Movement = c("AB",
"BC", "AB", "AA", "AB", "BC", "AA", "AB", "BA")),
class = "data.frame", row.names = c(NA,
-9L))
推荐阅读
- javascript - 如何像 React.js 一样在 Java 中进行实时值更改
- python - 关闭在 python 的新窗口中打开的子进程
- python - 我收到 pyinstaller 的错误,从 py 到 exe 的转换工作正常,但是当我尝试打开它时出现错误
- css - :not() 用于 httml[lang] 的伪类不起作用
- android - Flutter 从 firebase 填充 DropDown 中的数据
- php - PHP SoapClient 的 WSDL 文件
- python - 进程以退出代码 137 结束(被信号 9:SIGKILL 中断):检索图像数据
- php - Google Cloud Vision 在本地主机上工作,但不在 Google Cloud 托管的 WordPress 网站上
- ios - 导航视图有问题(SwiftUI、iOS)
- python - 如何在 Python 中比较两个 3D 图?