R 合并两个数据集,但使用ID将行转换为列

R 合并两个数据集,但使用ID将行转换为列,r,R,有两个数据集 数据集A ID年缺勤百分比Frequentabsentee Vioflaver 0110 2014 6.88 0 1 0110 2015 20.27 1 0 0111 2014 7.82 0 1 0111 2015

有两个数据集

数据集A

ID年缺勤百分比Frequentabsentee Vioflaver
0110     2014     6.88                 0                     1
0110     2015     20.27                1                     0
0111     2014     7.82                 0                     1
0111     2015     6.12                 0                     1
0112     2014     1.32                 0                     0
0112     2015     11.2                 1                     0
数据集B

ID学校名称性别
0110苹果约翰男
0111香蕉简女
0111苹果罗恩男
我将合并两个数据集,并使用数据集A的行为数据集B创建新列

最终数据集应如下所示:

ID学校名称性别2014 2014FA 2015 2015FA版本
0110苹果约翰男6.88 0 20.27 1 1
0111香蕉简母7.82 0 6.12 0 1
0111苹果Rohn男1.32 0 11.2 1 0
基本上,如果该人员在这一年中经常缺勤(10%或更多),则2014年FA将为1。如果该人在任何一年中都将Vioflaver设置为1,则Vioflaver将为1(因此ID 0110将为1,因为他在2014年设置了1,即使在2015年,它为0)

非常感谢你

我们可以使用

library(dplyr)
library(tidyr)
left_join(datB, datA, by = 'ID') %>% 
   pivot_wider(names_from = year, values_from = absencePercentage:VioFlagEver)

这是两个问题,我建议你一次只关注一个。首先是如何
合并这两个数据集,这应该是直接的
合并
左联合
或两者中的任何一个,有很多问题要问。因为这将产生比您想要的更多的行(每个ID 1行),所以您需要从长到宽进行重塑。一个流行的函数是
tidyr::pivot\u wider
,而
data.table::dcast
也能很好地工作。