左加入 for 循环
left join with for loop
我需要
的答案
no fac date count
1 fac1 2015-01 3
2 fac1 2016-01 5
3 fac1 2017-01 7
4 fac2 2015-01 9
5 fac2 2017-01 11
6 fac3 2016-01 13
7 fac4 2015-01 15
8 fac5 2017-01 17
制作
date fac1 fac2 fac3 fac4 fac5
2015-01 3 9 0 15 0
2016-01 5 0 13 0 0
2017-01 7 11 0 0 17
像这样。
我正在尝试使用左连接,但出现此错误。
# first Data
Data0 <-mid[1:31,]
# Separate Data by factor
for (i in 1:72) {
assign(paste0("Data", i), subset(mid, midnames %in% mid_names[i]))
}
# Make first dataset
df3 <- Data0
df3$date[is.na(df3$date)] <- Sys.time()
df3[is.na(df3)]<-0
#leftjoin Datas by factor
for (i in 1:72) {
df3 <- sqldf(paste("SELECT *
FROM df3
LEFT OUTER JOIN Data",i," USING(year,month,date)",sep=""))
df3[is.na(df3)]<-0
}
Error: Cannot pass NA to dbQuoteIdentifier()
In addition: Warning message:
In field_types[] <- field_types[names(data)] :
number of items to replace is not a multiple of replacement length
您的查询已关闭;你需要一个标准的数据透视表查询:
SELECT
date,
MAX(CASE WHEN fac = 'fac1' THEN count END) AS fac1,
MAX(CASE WHEN fac = 'fac2' THEN count END) AS fac2,
MAX(CASE WHEN fac = 'fac3' THEN count END) AS fac3,
MAX(CASE WHEN fac = 'fac4' THEN count END) AS fac4,
MAX(CASE WHEN fac = 'fac5' THEN count END) AS fac5
FROM yourTable
GROUP BY
date
我假设您有一个数据框,其中包含您的第一条样本信息中的数据。
我需要
的答案no fac date count
1 fac1 2015-01 3
2 fac1 2016-01 5
3 fac1 2017-01 7
4 fac2 2015-01 9
5 fac2 2017-01 11
6 fac3 2016-01 13
7 fac4 2015-01 15
8 fac5 2017-01 17
制作
date fac1 fac2 fac3 fac4 fac5
2015-01 3 9 0 15 0
2016-01 5 0 13 0 0
2017-01 7 11 0 0 17
像这样。
我正在尝试使用左连接,但出现此错误。
# first Data
Data0 <-mid[1:31,]
# Separate Data by factor
for (i in 1:72) {
assign(paste0("Data", i), subset(mid, midnames %in% mid_names[i]))
}
# Make first dataset
df3 <- Data0
df3$date[is.na(df3$date)] <- Sys.time()
df3[is.na(df3)]<-0
#leftjoin Datas by factor
for (i in 1:72) {
df3 <- sqldf(paste("SELECT *
FROM df3
LEFT OUTER JOIN Data",i," USING(year,month,date)",sep=""))
df3[is.na(df3)]<-0
}
Error: Cannot pass NA to dbQuoteIdentifier()
In addition: Warning message: In field_types[] <- field_types[names(data)] : number of items to replace is not a multiple of replacement length
您的查询已关闭;你需要一个标准的数据透视表查询:
SELECT
date,
MAX(CASE WHEN fac = 'fac1' THEN count END) AS fac1,
MAX(CASE WHEN fac = 'fac2' THEN count END) AS fac2,
MAX(CASE WHEN fac = 'fac3' THEN count END) AS fac3,
MAX(CASE WHEN fac = 'fac4' THEN count END) AS fac4,
MAX(CASE WHEN fac = 'fac5' THEN count END) AS fac5
FROM yourTable
GROUP BY
date
我假设您有一个数据框,其中包含您的第一条样本信息中的数据。