我有两个数据集,每个数据集包含相同的列。第一列是名称,然后是其他一些特征。
许多数据缺失,空元素,但所有名称都在那里。
我想合并列表,删除重复信息但保留所有信息
实施例: 第一个数据集
Name V1 V2
A 2 3
B 9
第二个数据集
Name V1 V2
A 3
B 4 9
C 18
这是我被困之前的距离:
S1=read.xlsx2("... /Exercise_Data_Week_2.xlsx", sheetName = "Sheet1")
S2=read.xlsx2("... /w2/Exercise_Data_Week_2.xlsx", sheetName = "Sheet2")
alldata=rbind(S1,S2) #18305 obs
MName <- unique(alldata["Name"]) #13738 obs
编辑:合并后的所需数据集(如上校猜测)
# Name V1 V2
#1: A 2 3
#2: B 4 9
#3: C 18 NA
EDIT2:请注意,这不是我正在使用的数据,它是一个简化版本。所以我正在寻找一种可推广的方式......
注意:这是来自MOOC EX101x数据分析的Excel练习:将其带到MAX()。我正在把时间投入在R中(在开始时它会更难,但我相信从长远来看,我会节省R的时间)。该课程是开放和免费的,所以我想我可以发布练习的数据:https://courses.edx.org/c4x/DelftX/EX101x/asset/Exercise_Data_Week_2.xlsx
答案 0 :(得分:1)
这是基础R的解决方案:
df1 <- data.frame(Name=c('A','B'), V1=c(2,NA), V2=c(3,9) );
df2 <- data.frame(Name=c('A','B','C'), V1=c(NA,4,18), V2=c(3,9,NA) );
aggregate(.~Name, rbind(df1,df2), function(v) na.omit(v)[1], na.action=NULL );
## Name V1 V2
## 1 A 2 3
## 2 B 4 9
## 3 C 18 NA
此解决方案假设如果两个输入data.frames之间存在重复的非NA值,则可以接受它们中的第一个。