使用merge()和空格合并数据帧-格式问题
我想将信息从一个数据帧添加到另一个数据帧,从使用merge()和空格合并数据帧-格式问题,r,merge,R,Merge,我想将信息从一个数据帧添加到另一个数据帧,从dfadd添加到dfmaster,同时保持dfmaster中的行顺序 我尝试使用merge(),但它更改了dfmaster中的行顺序。这里的顺序很关键。是否有data.table()或tidyverse()方法来处理此问题 谢谢 # Data dfmaster <- data.frame(variable_name=c("Blood_sugar","","","Blood_pressure","","Pulse",""),variable_lev
dfadd
添加到dfmaster
,同时保持dfmaster
中的行顺序
我尝试使用merge(),但它更改了dfmaster
中的行顺序。这里的顺序很关键。是否有data.table()或tidyverse()方法来处理此问题
谢谢
# Data
dfmaster <- data.frame(variable_name=c("Blood_sugar","","","Blood_pressure","","Pulse",""),variable_level=c("high","medium","low","high","low","high","low"),variable_defin=c("baseline, lab","","","baseline, measured","","baseline, measured",""))
dfadd <- data.frame(variable_name=c("Blood_sugar","Blood_pressure","Pulse","Breakfast","Rest"),centre_names1=c("ST","FD","","QW",""),centre_names2=c("","HF","","",""),centre_names3=c("","LD","","",""),one_or_more=c("one","more","","one",""))
# Goal
dfgoal <- data.frame(variable_name=c("Blood_sugar","","","Blood_pressure","","Pulse",""),variable_level=c("high","medium","low","high","low","high","low"),variable_defin=c("baseline, lab","","","baseline, measured","","baseline, measured",""),centre_names1=c("ST","","","FD","","",""),centre_names2=c("","","","FD","","",""),centre_names3=c("","","","LD","","",""),one_or_more=c("more","","","more","","",""))
# Attempt
dfmaster <- merge(dfmaster,dfadd,by="variable_name", all.x=T)
#数据
dfmaster看起来您的dfgoal
中有一个小错误。。。在血糖
上,“一个或多个”应为“一”(根据dfadd
),而不是“多个”
请检查以下代码是否为您的答案
library(dplyr)
dfmaster %>%
#perform left join
left_join(dfadd) %>%
#tidy all the emtpy factors to NA (remove if not desired)
mutate_if(is.factor, funs(factor(replace(., .=="", NA))))
# variable_name variable_level variable_defin centre_names1 centre_names2 centre_names3 one_or_more
# 1 Blood_sugar high baseline, lab ST <NA> <NA> one
# 2 medium <NA> <NA> <NA> <NA> <NA>
# 3 low <NA> <NA> <NA> <NA> <NA>
# 4 Blood_pressure high baseline, measured FD HF LD more
# 5 low <NA> <NA> <NA> <NA> <NA>
# 6 Pulse high baseline, measured <NA> <NA> <NA> <NA>
# 7 low <NA> <NA> <NA> <NA> <NA>
库(dplyr)
dfmaster%>%
#执行左连接
左联合(dfadd)%>%
#将所有emtpy因素整理至NA(如果不需要,则移除)
如果(is.factor,funs(factor(replace(,.==”,NA)),则进行变异
#变量名称变量级别变量定义中心名称1中心名称2中心名称3一个或多个
#1血糖高基线,实验室ST-1
#2中等
#3低
#4血压高基线,测量FD HF LD更多
#5低
#6脉冲高基线,测量
#7低