R 合并两个数据集,但使用ID将行转换为列
有两个数据集 数据集AR 合并两个数据集,但使用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
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
也能很好地工作。