Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/77.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/silverlight/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用merge()和空格合并数据帧-格式问题_R_Merge - Fatal编程技术网

使用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低