![](/img/trans.png)
[英]r dplyr::left_join using datetime columns does not join properly
[英]Using left_join based on two columns does not work in R
我正在嘗試將包含left_join
字母的數據left_join
到主數據left_join
。 聯接應基於兩列。 每行只有一列包含值,因為它們來自不同的模型。
這里的主要數據幀:
main_df<-structure(list(crop = c("B", "B", "B", "B", "B", "B", "B", "B",
"B", "A", "A", "A", "A", "A", "A", "A", "A", "A", "C", "C", "C",
"C", "C", "C", "C", "C", "C"), till = c("X", "X", "X", "Y", "Y",
"Y", "Z", "Z", "Z", "X", "X", "X", "Y", "Y", "Y", "Z", "Z", "Z",
"X", "X", "X", "Y", "Y", "Y", "Z", "Z", "Z"), GW = c("250", "100",
"500", "250", "100", "500", "250", "100", "500", "250", "100",
"500", "250", "100", "500", "250", "100", "500", "250", "100",
"500", "250", "100", "500", "250", "100", "500"), dm = c(12.492780040282,
21.2330087520355, 9.08920058839951, 9.6579014126203, 32.3208262815535,
10.6259628492133, 6.13043260006999, 49.6628012967183, 28.8896483162288,
14.8279966222885, 11.5590504143496, 23.7186742486867, 22.8598403733191,
8.59025110732551, 20.8781551231343, 34.6812252760796, 25.056901935212,
11.9791387922734, 2.98603520945085, 20.768615091017, 5.68987327841495,
35.6382624005007, 24.1315098558383, 32.3442728999024, 35.5586316123229,
8.36256345081252, 6.06606303991154)), row.names = c(NA, -27L), class = c("tbl_df",
"tbl", "data.frame"))
而這里的 cld 數據框:
cld_df<-structure(list(till = c("Z", "Y", "X", NA, NA, NA, "Z", "X",
"Y"), .group = c(" a ", " b", " b", " a ", " ab", " b", " a ",
" ab", " b"), crop = c("B", "B", "B", "C", "C", "C", "A", "A",
"A"), GW = c(NA, NA, NA, "500", "250", "100", NA, NA, NA)), row.names = c(NA,
-9L), class = c("tbl_df", "tbl", "data.frame"))
cld 位於名為“.group”的列內。 將列保留為字符並將它們轉換為因子都會導致空列:
main_df%>% mutate(till=as.factor(till),GW=as.factor(GW),crop=as.factor(crop)) %>%
left_join(cld_df%>%mutate(till=as.factor(till),GW=as.factor(GW),crop=as.factor(crop)))
這是你需要的嗎?
main_df %>%
left_join(select(cld_df, crop, till, .group), by = c("crop", "till")) %>%
left_join(select(cld_df, crop, GW, .group), by = c("crop", "GW")) %>%
mutate(.group = coalesce(.group.x, .group.y)) %>%
select(-.group.x, -.group.y) %>%
print(n=99)
# # A tibble: 27 x 5
# crop till GW dm .group
# <chr> <chr> <chr> <dbl> <chr>
# 1 B X 250 12.5 " b"
# 2 B X 100 21.2 " b"
# 3 B X 500 9.09 " b"
# 4 B Y 250 9.66 " b"
# 5 B Y 100 32.3 " b"
# 6 B Y 500 10.6 " b"
# 7 B Z 250 6.13 " a "
# 8 B Z 100 49.7 " a "
# 9 B Z 500 28.9 " a "
# 10 A X 250 14.8 " ab"
# 11 A X 100 11.6 " ab"
# 12 A X 500 23.7 " ab"
# 13 A Y 250 22.9 " b"
# 14 A Y 100 8.59 " b"
# 15 A Y 500 20.9 " b"
# 16 A Z 250 34.7 " a "
# 17 A Z 100 25.1 " a "
# 18 A Z 500 12.0 " a "
# 19 C X 250 2.99 " ab"
# 20 C X 100 20.8 " b"
# 21 C X 500 5.69 " a "
# 22 C Y 250 35.6 " ab"
# 23 C Y 100 24.1 " b"
# 24 C Y 500 32.3 " a "
# 25 C Z 250 35.6 " ab"
# 26 C Z 100 8.36 " b"
# 27 C Z 500 6.07 " a "
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.