gpt4 book ai didi

r - 根据id提取可达行

转载 作者:行者123 更新时间:2023-12-04 00:20:38 24 4
gpt4 key购买 nike

我正在尝试编写一个 函数,它将返回与该 id 相关的所有行。

输入数据:

df <- data.frame(
id1=c('A1','A1','B1','B2','C2','C3','B3','D1','D2','E1'),
id2=c('P1','P2','P1','P2','P1','KK3','KK3','DL5','FD7','LO6')
)

例如

sample_rows <- function(id1){

#code here
return(output)
}

所需输出 1:

sample_rows(id1='A1') 应该返回以下数据框:

  id1    id2
A1 P1
A1 P2
B1 P1
B2 P2
C2 P1

所需输出 2:

sample_rows(id1 = 'C3') 应该返回以下数据框:

  id1    id2
C3 KK3
B3 KK3

最佳答案

不要使用sample作为函数名,你有覆盖R自己的函数的风险

base R 解决方案:

my_fun <- function(id1) {
id2s <- df[df$id1 == id1, 'id2']
df[df$id2 %in% id2s,]
}

my_fun(id1 = 'A1')
#> id1 id2
#> 1 A1 P1
#> 2 A1 P2
#> 3 B1 P1
#> 4 B2 P2
#> 5 C2 P1

my_fun(id1 = 'C3')
#> id1 id2
#> 6 C3 KK3
#> 7 B3 KK3

dplyr 解决方案:

library(dplyr)

my_dplyr_fun <- function(data, id1) {
id2s <- filter(data, id1 == {{id1}}) %>%
pull(id2)
data %>%
filter(id2 %in% id2s)
}

df %>%
my_dplyr_fun('C3')
#> id1 id2
#> 1 C3 KK3
#> 2 B3 KK3

reprex package 创建于 2020-04-03 (v0.3.0)

关于r - 根据id提取可达行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61013319/

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