我需要帮助正确合并两个data.frame
!
我首先要做的是导入一个包含三列的CSV(“Startmeter”,“Endmeter”,“Information”)
然后我想用0到40000米的简单序列与CSV中的现有数据一起发出。如果有人可以提供帮助,那就没问题了。)
=== First Data.Frame(简单序列)
Meter
87
88
89
90
91
92
93
94
95
96
===第二个Data.Frame(CSV数据)
Meter Information
90 1
91 1
92 1
93 1
101 2
102 2
103 2
===最终产品(它应该如何)
Meter Information
88 NA
89 NA
90 1
91 1
92 1
93 1
94 NA
95 NA
96 NA
97 NA
98 NA
99 NA
100 NA
101 2
102 2
103 2
104 NA
105 NA
....
我的代码到目前为止的表现如何:
csvlesen<-read.csv("C:\\Users\\Username\\Desktop\\R\\File.csv",header = TRUE, sep = ";", quote="", dec=",")
lastmeter<- csvlesen[nrow(csvlesen),2]*1000
startmeter <- csvlesen[ ,1]*1000
endmeter <- csvlesen[ ,2]*1000
information<- csvlesen[ ,16]
d <- data.frame()
e <- data.frame(0:lastmeter)
colnames(e) <- c("Meter")
for (i in 1:lastmeter) {
m <-seq(startmeter[i],endmeter[i])
m_final <- head(m, -1)
csvmeter <- cbind(m_final,information[i])
colnames(csvmeter) <- c("Meter","Information")
d <- rbind(d,csvmeter)
}
答案 0 :(得分:2)
您希望使用merge
执行以下操作。
首先,我们创建一些玩具数据,然后我们使用merge
将data.frame
合并为一个。
df1 <- data.frame(Meter = 41:50)
df1
# Meter
#1 41
#2 42
# [...]
#9 49
#10 50
df2 <- data.frame(Meter = 41:50+5, Information = rnorm(10))
df2
# Meter Information
#1 46 0.8155859
#2 47 0.9530017
# [...]
#9 54 0.8817336
#10 55 0.3645192
merge(df1, df2, by = "Meter", all = TRUE)
# Meter Information
#1 41 NA
#2 42 NA
#3 43 NA
#4 44 NA
#5 45 NA
#6 46 0.8155859
#7 47 0.9530017
#8 48 2.3560323
#9 49 -2.5787036
#10 50 2.8828521
#11 51 0.8408719
#12 52 -0.5162573
#13 53 0.5103627
#14 54 0.8817336
#15 55 0.3645192
答案 1 :(得分:1)
除了merge
,另一种可能的解决方案是使用ifelse
和match
的组合:
firstDF$Information <- ifelse(match(firstDF$Meter,secondDF$Meter), secondDF$Information, NA)