gpt4 book ai didi

r - 如何 left_join() 两个数据集但只从其中一个数据集中选择特定列?

转载 作者:行者123 更新时间:2023-12-05 02:04:15 24 4
gpt4 key购买 nike

这里有两个数据集:(这是假数据)

library(tidyverse)
myfruit <- tibble(fruit_name = c("apple", "pear", "banana", "cherry"),
number = c(2, 4, 6, 8))

fruit_info <- tibble(fruit_name = c("apple", "pear", "banana", "cherry"),
colour = c("red", "green", "yellow", "d.red"),
batch_number = c(4, 4, 4, 4),
type = c("gala", "conference", "cavendish", "bing"),
weight = c(10, 11, 12, 13),
age_days = c(20, 22, 24, 16))

> myfruit
# A tibble: 4 x 2
fruit_name number
<chr> <dbl>
1 apple 2
2 pear 4
3 banana 6
4 cherry 8

> fruit_info
# A tibble: 4 x 6
fruit_name colour batch_number type weight age_days
<chr> <chr> <dbl> <chr> <dbl> <dbl>
1 apple red 4 gala 10 20
2 pear green 4 conference 11 22
3 banana yellow 4 cavendish 12 24
4 cherry d.red 4 bing 13 16

我想使用dplyr::left_join() 函数将myfruitfruit_info 组合在一起,但我只想要“batch_number”和 fruit_info 中的“类型”列。

我知道我可以做到:

new_myfruit <- left_join(myfruit, fruit_info, by = "fruit_name") %>%
select(fruit_name, number, batch_number, type)

# OR

new_myfruit <- left_join(myfruit, fruit_info, by = "fruit_name") %>%
select(-colour, -weight, -age_days)

但如果我在 fruit_info 中有更多的列,并且我必须在 select() 函数中输入许多列名,那将非常耗时。那么,有没有更有效的方法来做到这一点?

编辑:

我在网上看到了一些例子,你可以在其中做这样的事情:

new_myfruits  <- left_join(myfruit,
fruit_info %>% select(batch_number, type),
by = "fruit_name")

但是我收到一条错误消息:

# Error: Join columns must be present in data.
# x Problem with `fruit_name`.

有人知道我做错了什么吗?

如果有任何帮助,我将不胜感激:)

最佳答案

这行吗:

> myfruit %>% left_join(
+ fruit_info %>% select(1,3,4)
+ )
Joining, by = "fruit_name"
# A tibble: 4 x 4
fruit_name number batch_number type
<chr> <dbl> <dbl> <chr>
1 apple 2 4 gala
2 pear 4 4 conference
3 banana 6 4 cavendish
4 cherry 8 4 bing
>

关于r - 如何 left_join() 两个数据集但只从其中一个数据集中选择特定列?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64540940/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com