合并两个(混乱的)数据集
Merging two (messy) datasets
我有两个数据集,每个数据集都包含相同的列。第一列是名称,然后是其他一些特征。
许多数据丢失,空元素,但所有名称都在那里。
我想合并列表,删除重复信息但保留所有信息
示例:
第一个数据集
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 中做这件事(一开始它要难得多,但我相信 long-运行 我会用 R 节省时间)。该课程是开放且免费的,所以我想我可以 post 练习的数据:https://courses.edx.org/c4x/DelftX/EX101x/asset/Exercise_Data_Week_2.xlsx
这是一个基于 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
此解决方案假设如果两个输入之间存在重复的非 NA 值 data.frames,则始终可以接受其中的第一个。
我有两个数据集,每个数据集都包含相同的列。第一列是名称,然后是其他一些特征。
许多数据丢失,空元素,但所有名称都在那里。
我想合并列表,删除重复信息但保留所有信息
示例: 第一个数据集
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 中做这件事(一开始它要难得多,但我相信 long-运行 我会用 R 节省时间)。该课程是开放且免费的,所以我想我可以 post 练习的数据:https://courses.edx.org/c4x/DelftX/EX101x/asset/Exercise_Data_Week_2.xlsx
这是一个基于 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
此解决方案假设如果两个输入之间存在重复的非 NA 值 data.frames,则始终可以接受其中的第一个。